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§
Sourcefn send(
&self,
req: SendRequest,
) -> impl Future<Output = Result<SendResponse>> + Send
fn send( &self, req: SendRequest, ) -> impl Future<Output = Result<SendResponse>> + Send
Handle Send — run agent and return complete response.
Sourcefn stream(
&self,
req: StreamRequest,
) -> impl Stream<Item = Result<StreamEvent>> + Send
fn stream( &self, req: StreamRequest, ) -> impl Stream<Item = Result<StreamEvent>> + Send
Handle Stream — run agent and stream response events.
Sourcefn download(
&self,
req: DownloadRequest,
) -> impl Stream<Item = Result<DownloadEvent>> + Send
fn download( &self, req: DownloadRequest, ) -> impl Stream<Item = Result<DownloadEvent>> + Send
Handle Download — download model files with progress.
Sourcefn hub(
&self,
package: CompactString,
action: HubAction,
) -> impl Stream<Item = Result<HubEvent>> + Send
fn hub( &self, package: CompactString, action: HubAction, ) -> impl Stream<Item = Result<HubEvent>> + Send
Handle Hub — install or uninstall a hub package.
Sourcefn list_sessions(&self) -> impl Future<Output = Result<Vec<SessionInfo>>> + Send
fn list_sessions(&self) -> impl Future<Output = Result<Vec<SessionInfo>>> + Send
Handle Sessions — list active sessions.
Sourcefn kill_session(
&self,
session: u64,
) -> impl Future<Output = Result<bool>> + Send
fn kill_session( &self, session: u64, ) -> impl Future<Output = Result<bool>> + Send
Handle Kill — close a session by ID.
Sourcefn list_tasks(&self) -> impl Future<Output = Result<Vec<TaskInfo>>> + Send
fn list_tasks(&self) -> impl Future<Output = Result<Vec<TaskInfo>>> + Send
Handle Tasks — list tasks in the task registry.
Provided Methods§
Sourcefn dispatch(
&self,
msg: ClientMessage,
) -> impl Stream<Item = ServerMessage> + Send + '_
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.