Skip to main content

Server

Trait Server 

Source
pub trait Server: Sync {
    // Required methods
    fn send(
        &self,
        req: SendRequest,
    ) -> impl Future<Output = Result<SendResponse>> + Send;
    fn stream(
        &self,
        req: StreamRequest,
    ) -> impl Stream<Item = Result<StreamEvent>> + Send;
    fn download(
        &self,
        req: DownloadRequest,
    ) -> impl Stream<Item = Result<DownloadEvent>> + Send;
    fn ping(&self) -> impl Future<Output = Result<()>> + Send;
    fn hub(
        &self,
        package: CompactString,
        action: HubAction,
    ) -> impl Stream<Item = Result<HubEvent>> + Send;
    fn list_sessions(
        &self,
    ) -> impl Future<Output = Result<Vec<SessionInfo>>> + Send;
    fn kill_session(
        &self,
        session: u64,
    ) -> impl Future<Output = Result<bool>> + Send;
    fn list_tasks(&self) -> impl Future<Output = Result<Vec<TaskInfo>>> + Send;
    fn kill_task(
        &self,
        task_id: u64,
    ) -> impl Future<Output = Result<bool>> + Send;
    fn approve_task(
        &self,
        task_id: u64,
        response: String,
    ) -> impl Future<Output = Result<bool>> + Send;

    // Provided method
    fn dispatch(
        &self,
        msg: ClientMessage,
    ) -> impl Stream<Item = ServerMessage> + Send + '_ { ... }
}
Expand description

Server-side protocol handler.

Each method corresponds to one ClientMessage variant. Implementations receive typed request structs and return typed responses — no enum matching required. Streaming operations return impl Stream.

The provided dispatch method routes a raw ClientMessage to the appropriate handler, returning a stream of ServerMessages.

Required Methods§

Source

fn send( &self, req: SendRequest, ) -> impl Future<Output = Result<SendResponse>> + Send

Handle Send — run agent and return complete response.

Source

fn stream( &self, req: StreamRequest, ) -> impl Stream<Item = Result<StreamEvent>> + Send

Handle Stream — run agent and stream response events.

Source

fn download( &self, req: DownloadRequest, ) -> impl Stream<Item = Result<DownloadEvent>> + Send

Handle Download — download model files with progress.

Source

fn ping(&self) -> impl Future<Output = Result<()>> + Send

Handle Ping — keepalive.

Source

fn hub( &self, package: CompactString, action: HubAction, ) -> impl Stream<Item = Result<HubEvent>> + Send

Handle Hub — install or uninstall a hub package.

Source

fn list_sessions(&self) -> impl Future<Output = Result<Vec<SessionInfo>>> + Send

Handle Sessions — list active sessions.

Source

fn kill_session( &self, session: u64, ) -> impl Future<Output = Result<bool>> + Send

Handle Kill — close a session by ID.

Source

fn list_tasks(&self) -> impl Future<Output = Result<Vec<TaskInfo>>> + Send

Handle Tasks — list tasks in the task registry.

Source

fn kill_task(&self, task_id: u64) -> impl Future<Output = Result<bool>> + Send

Handle KillTask — cancel a task by ID.

Source

fn approve_task( &self, task_id: u64, response: String, ) -> impl Future<Output = Result<bool>> + Send

Handle Approve — approve a blocked task’s inbox item.

Provided Methods§

Source

fn dispatch( &self, msg: ClientMessage, ) -> impl Stream<Item = ServerMessage> + Send + '_

Dispatch a ClientMessage to the appropriate handler method.

Returns a stream of ServerMessages. Request-response operations yield exactly one message; streaming operations yield many.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§