SataClient

Struct SataClient 

Source
pub struct SataClient { /* private fields */ }
Available on crate feature clients only.
Expand description

A connection to a sata pcfs server.

Implementations§

Source§

impl SataClient

Source

pub async fn connect<AddrTy: ToSocketAddrs>( address: AddrTy, supports_csr: bool, supports_ffio: bool, first_read_size: u32, first_write_size: u32, trace_io_during_debug: bool, ) -> Result<Self, CatBridgeError>

Connect to a PCFS Sata server.

§Errors

This errors when the client cannot connect to the server.

Source

pub async fn try_set_csr_ffio( &self, csr: bool, ffio: bool, ) -> Result<(), CatBridgeError>

Attempt to update Combined Send/Recv & Fast File I/O flags.

This may fail if setting to ‘true’, as both the server, and client have to support, and agree to these flags in order for them to be supported.

§Errors

If we cannot negotiate with the server to update combined send/recv.

Source

pub async fn try_set_csr(&self, csr: bool) -> Result<(), CatBridgeError>

Attempt to update combined send/recv flag or “CSR”.

This may fail if setting to ‘true’, as both the server, and client have to support, and agree to support Combined Send/Recv.

§Errors

If we cannot negotiate with the server to update combined send/recv.

Source

pub async fn try_set_ffio(&self, ffio: bool) -> Result<(), CatBridgeError>

Attempt to update fast-file i/o or “FFIO”.

This may fail if setting to ‘true’, as both the server, and client have to support, and agree to support FFIO.

§Errors

If we cannot negotiate with the server to update combined send/recv.

Source

pub async fn ping( &self, timeout: Option<Duration>, ) -> Result<(), CatBridgeError>

Perform a ‘ping’ on the remote host, and update our CSR/FFIO flag state.

§Errors

If we cannot send a request to our upstream PCFS server, or if we cannot read a response back in the timeout specified.

Source

pub async fn change_mode( &self, path: String, writable: bool, timeout: Option<Duration>, ) -> Result<(), CatBridgeError>

Mark a file as ‘read-only’, or ‘writable’.

In the future someday we may allow full change mode flags of unix-style flags. Unfortunately because this is based off of windows code you have only a read-only vs writable flag.

§Errors
  • If the path name is too long to be serialized.
  • If we cannot send the request to the PCFS Sata server.
  • If we cannot receive a response from the PCFS Sata server.
  • If we cannot parse the response from the PCFS Sata server.
  • If the return code of the response was not successful.
Source

pub async fn change_owner( &self, path: String, owner: u32, group: u32, timeout: Option<Duration>, ) -> Result<(), CatBridgeError>

Change the user owner, and group owner of a file.

NOTE(mythra): this will always error when talking with a PCFS compatible server.

§Errors
  • If the path name is too long to be serialized.
  • If we cannot send the request to the PCFS Sata server.
  • If we cannot receive a response from the PCFS Sata server.
  • If we cannot parse the response from the PCFS Sata server.
  • If the return code of the response was not successful.
Source

pub async fn create_folder( &self, path: String, writable: bool, timeout: Option<Duration>, ) -> Result<(), CatBridgeError>

Create a new folder on the remote PCFS server.

§Errors
  • If the path name is too long to be serialized.
  • If we cannot send the request to the PCFS Sata server.
  • If we cannot receive a response from the PCFS Sata server.
  • If we cannot parse the response from the PCFS Sata server.
  • If the return code of the response was not successful.
Source

pub async fn info_by_query( &self, path: String, query_type: SataQueryType, timeout: Option<Duration>, ) -> Result<SataQueryResponse, CatBridgeError>

Query a particular path for information about it.

In general prefer more specific query types, as opposed to this particular “grab-bag” of an interface, which will safely wrap this function and choose the right kind of return type.

§Errors
  • If the path name is too long to be serialized.
  • If we cannot send the request to the PCFS Sata server.
  • If we cannot receive a response from the PCFS Sata server.
  • If we cannot parse the response from the PCFS Sata server.
  • If the return code of the response was not successful.
Source

pub async fn file_count( &self, path: String, timeout: Option<Duration>, ) -> Result<u32, CatBridgeError>

Get the amount of files within a particular folder.

§Errors
  • If the path name is too long to be serialized.
  • If we cannot send the request to the PCFS Sata server.
  • If we cannot receive a response from the PCFS Sata server.
  • If we cannot parse the response from the PCFS Sata server.
  • If the return code of the response was not successful.
Source

pub async fn free_disk_space( &self, path: String, timeout: Option<Duration>, ) -> Result<u64, CatBridgeError>

Get the amount of free disk space left on whatever disk the path is on.

§Errors
  • If the path name is too long to be serialized.
  • If we cannot send the request to the PCFS Sata server.
  • If we cannot receive a response from the PCFS Sata server.
  • If we cannot parse the response from the PCFS Sata server.
  • If the return code of the response was not successful.
Source

pub async fn folder_size( &self, path: String, timeout: Option<Duration>, ) -> Result<u64, CatBridgeError>

Get the total amount of space being taken by a folder.

§Errors
  • If the path name is too long to be serialized.
  • If we cannot send the request to the PCFS Sata server.
  • If we cannot receive a response from the PCFS Sata server.
  • If we cannot parse the response from the PCFS Sata server.
  • If the return code of the response was not successful.
Source

pub async fn path_info( &self, path: String, timeout: Option<Duration>, ) -> Result<SataFDInfo, CatBridgeError>

Get the information about a particular file path.

§Errors
  • If the path name is too long to be serialized.
  • If we cannot send the request to the PCFS Sata server.
  • If we cannot receive a response from the PCFS Sata server.
  • If we cannot parse the response from the PCFS Sata server.
  • If the return code of the response was not successful.
Source

pub async fn remove( &self, path: String, timeout: Option<Duration>, ) -> Result<(), CatBridgeError>

Remove a file or folder on the host filesystem.

§Errors
  • If the path name is too long to be serialized.
  • If we cannot send the request to the PCFS Sata server.
  • If we cannot receive a response from the PCFS Sata server.
  • If we cannot parse the response from the PCFS Sata server.
  • If the return code of the response was not successful.
Source

pub async fn open_file( &self, path: String, mode_string: String, timeout: Option<Duration>, ) -> Result<SataClientFileHandle<'_>, CatBridgeError>

Attempt to open a file on the remote host.

This will return a file handle that you can then call read, write, etc. on. You will have to call close() on the file handle specifically.

§Errors
  • If the path name is too long to be serialized.
  • If the mode setring is not formatted correctly.
  • If we cannot send the request to the PCFS Sata server.
  • If we cannot receive a response from the PCFS Sata server.
  • If we cannot parse the response from the PCFS Sata server.
  • If the return code of the response was not successful.

Trait Implementations§

Source§

impl Debug for SataClient

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Structable for SataClient

Source§

fn definition(&self) -> StructDef<'_>

Returns the struct’s definition. Read more
Source§

impl Valuable for SataClient

Source§

fn as_value(&self) -> Value<'_>

Converts self into a Value instance. Read more
Source§

fn visit(&self, visitor: &mut dyn Visit)

Calls the relevant method on Visit to extract data from self. Read more
Source§

fn visit_slice(slice: &[Self], visit: &mut dyn Visit)
where Self: Sized,

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,