pub trait DistantApi {
    type LocalData: Send + Sync;

Show 25 methods fn config(&self) -> ServerConfig { ... } fn on_accept<'life0, 'life1, 'async_trait>(
        &'life0 self,
        local_data: &'life1 mut Self::LocalData
    ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        'life1: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn capabilities<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>
    ) -> Pin<Box<dyn Future<Output = Result<Capabilities>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn read_file<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        path: PathBuf
    ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn read_file_text<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        path: PathBuf
    ) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn write_file<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        path: PathBuf,
        data: Vec<u8>
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn write_file_text<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        path: PathBuf,
        data: String
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn append_file<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        path: PathBuf,
        data: Vec<u8>
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn append_file_text<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        path: PathBuf,
        data: String
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn read_dir<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        path: PathBuf,
        depth: usize,
        absolute: bool,
        canonicalize: bool,
        include_root: bool
    ) -> Pin<Box<dyn Future<Output = Result<(Vec<DirEntry>, Vec<Error>)>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn create_dir<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        path: PathBuf,
        all: bool
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn copy<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        src: PathBuf,
        dst: PathBuf
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn remove<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        path: PathBuf,
        force: bool
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn rename<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        src: PathBuf,
        dst: PathBuf
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn watch<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        path: PathBuf,
        recursive: bool,
        only: Vec<ChangeKind>,
        except: Vec<ChangeKind>
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn unwatch<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        path: PathBuf
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn exists<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        path: PathBuf
    ) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn metadata<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        path: PathBuf,
        canonicalize: bool,
        resolve_file_type: bool
    ) -> Pin<Box<dyn Future<Output = Result<Metadata>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn search<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        query: SearchQuery
    ) -> Pin<Box<dyn Future<Output = Result<SearchId>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn cancel_search<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        id: SearchId
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn proc_spawn<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        cmd: String,
        environment: Environment,
        current_dir: Option<PathBuf>,
        persist: bool,
        pty: Option<PtySize>
    ) -> Pin<Box<dyn Future<Output = Result<ProcessId>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn proc_kill<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        id: ProcessId
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn proc_stdin<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        id: ProcessId,
        data: Vec<u8>
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn proc_resize_pty<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>,
        id: ProcessId,
        size: PtySize
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... } fn system_info<'life0, 'async_trait>(
        &'life0 self,
        ctx: DistantCtx<Self::LocalData>
    ) -> Pin<Box<dyn Future<Output = Result<SystemInfo>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: Sync + 'async_trait
, { ... }
}
Expand description

Interface to support the suite of functionality available with distant, which can be used to build other servers that are compatible with distant

Required Associated Types

Provided Methods

Returns config associated with API server

Invoked whenever a new connection is established, providing a mutable reference to the newly-created local data. This is a way to support modifying local data before it is used.

Retrieves information about the server’s capabilities.

Override this, otherwise it will return “unsupported” as an error.

Reads bytes from a file.

  • path - the path to the file

Override this, otherwise it will return “unsupported” as an error.

Reads bytes from a file as text.

  • path - the path to the file

Override this, otherwise it will return “unsupported” as an error.

Writes bytes to a file, overwriting the file if it exists.

  • path - the path to the file
  • data - the data to write

Override this, otherwise it will return “unsupported” as an error.

Writes text to a file, overwriting the file if it exists.

  • path - the path to the file
  • data - the data to write

Override this, otherwise it will return “unsupported” as an error.

Writes bytes to the end of a file, creating it if it is missing.

  • path - the path to the file
  • data - the data to append

Override this, otherwise it will return “unsupported” as an error.

Writes bytes to the end of a file, creating it if it is missing.

  • path - the path to the file
  • data - the data to append

Override this, otherwise it will return “unsupported” as an error.

Reads entries from a directory.

  • path - the path to the directory
  • depth - how far to traverse the directory, 0 being unlimited
  • absolute - if true, will return absolute paths instead of relative paths
  • canonicalize - if true, will canonicalize entry paths before returned
  • include_root - if true, will include the directory specified in the entries

Override this, otherwise it will return “unsupported” as an error.

Creates a directory.

  • path - the path to the directory
  • all - if true, will create all missing parent components

Override this, otherwise it will return “unsupported” as an error.

Copies some file or directory.

  • src - the path to the file or directory to copy
  • dst - the path where the copy will be placed

Override this, otherwise it will return “unsupported” as an error.

Removes some file or directory.

  • path - the path to a file or directory
  • force - if true, will remove non-empty directories

Override this, otherwise it will return “unsupported” as an error.

Renames some file or directory.

  • src - the path to the file or directory to rename
  • dst - the new name for the file or directory

Override this, otherwise it will return “unsupported” as an error.

Watches a file or directory for changes.

  • path - the path to the file or directory
  • recursive - if true, will watch for changes within subdirectories and beyond
  • only - if non-empty, will limit reported changes to those included in this list
  • except - if non-empty, will limit reported changes to those not included in this list

Override this, otherwise it will return “unsupported” as an error.

Removes a file or directory from being watched.

  • path - the path to the file or directory

Override this, otherwise it will return “unsupported” as an error.

Checks if the specified path exists.

  • path - the path to the file or directory

Override this, otherwise it will return “unsupported” as an error.

Reads metadata for a file or directory.

  • path - the path to the file or directory
  • canonicalize - if true, will include a canonicalized path in the metadata
  • resolve_file_type - if true, will resolve symlinks to underlying type (file or dir)

Override this, otherwise it will return “unsupported” as an error.

Searches files for matches based on a query.

  • query - the specific query to perform

Override this, otherwise it will return “unsupported” as an error.

Cancels an actively-ongoing search.

  • id - the id of the search to cancel

Override this, otherwise it will return “unsupported” as an error.

Spawns a new process, returning its id.

  • cmd - the full command to run as a new process (including arguments)
  • environment - the environment variables to associate with the process
  • current_dir - the alternative current directory to use with the process
  • persist - if true, the process will continue running even after the connection that spawned the process has terminated
  • pty - if provided, will run the process within a PTY of the given size

Override this, otherwise it will return “unsupported” as an error.

Kills a running process by its id.

  • id - the unique id of the process

Override this, otherwise it will return “unsupported” as an error.

Sends data to the stdin of the process with the specified id.

  • id - the unique id of the process
  • data - the bytes to send to stdin

Override this, otherwise it will return “unsupported” as an error.

Resizes the PTY of the process with the specified id.

  • id - the unique id of the process
  • size - the new size of the pty

Override this, otherwise it will return “unsupported” as an error.

Retrieves information about the system.

Override this, otherwise it will return “unsupported” as an error.

Implementors