turbomcp_server/handlers/traits/
sampling.rs

1//! Sampling handler trait for processing sampling requests
2
3use async_trait::async_trait;
4use turbomcp_protocol::RequestContext;
5use turbomcp_protocol::types::{CreateMessageRequest, CreateMessageResult, SamplingCapabilities};
6
7use crate::ServerResult;
8
9/// Sampling handler trait for processing sampling requests
10#[async_trait]
11pub trait SamplingHandler: Send + Sync {
12    /// Handle a sampling request
13    async fn handle(
14        &self,
15        request: CreateMessageRequest,
16        ctx: RequestContext,
17    ) -> ServerResult<CreateMessageResult>;
18
19    /// Get supported sampling capabilities
20    fn sampling_capabilities(&self) -> SamplingCapabilities {
21        SamplingCapabilities
22    }
23}