pub struct CompositeCompletionHandler { /* private fields */ }Expand description
Combined completion handler that delegates to different handlers based on reference type
This handler allows you to combine multiple completion handlers and route completion requests to the appropriate handler based on the reference type.
§Example
use prism_mcp_rs::core::completion::*;
use std::collections::HashMap;
let prompt_handler = PromptCompletionHandler::new(vec!["analyze".to_string()]);
let resource_handler = ResourceUriCompletionHandler::new(vec![]);
let tool_handler = ToolCompletionHandler::new(HashMap::new());
let combined = CompositeCompletionHandler::new()
.with_prompt_handler(prompt_handler)
.with_resource_handler(resource_handler)
.with_tool_handler(tool_handler);Implementations§
Source§impl CompositeCompletionHandler
impl CompositeCompletionHandler
Sourcepub fn add_handler<H>(
&mut self,
reference_type: String,
handler: H,
) -> &mut Selfwhere
H: CompletionHandler + 'static,
pub fn add_handler<H>(
&mut self,
reference_type: String,
handler: H,
) -> &mut Selfwhere
H: CompletionHandler + 'static,
Add a handler for a specific reference type
§Arguments
reference_type- The reference type this handler supports (e.g., “ref/prompt”)handler- The completion handler
Sourcepub fn with_handler<H>(
self,
reference_type: impl Into<String>,
handler: H,
) -> Selfwhere
H: CompletionHandler + 'static,
pub fn with_handler<H>(
self,
reference_type: impl Into<String>,
handler: H,
) -> Selfwhere
H: CompletionHandler + 'static,
Add a handler for a specific reference type (builder pattern)
§Arguments
reference_type- The reference type this handler supports (e.g., “ref/prompt”)handler- The completion handler
Sourcepub fn with_prompt_handler<H: CompletionHandler + 'static>(
self,
handler: H,
) -> Self
pub fn with_prompt_handler<H: CompletionHandler + 'static>( self, handler: H, ) -> Self
Set the prompt completion handler
Sourcepub fn with_resource_handler<H: CompletionHandler + 'static>(
self,
handler: H,
) -> Self
pub fn with_resource_handler<H: CompletionHandler + 'static>( self, handler: H, ) -> Self
Set the resource completion handler
Sourcepub fn with_tool_handler<H: CompletionHandler + 'static>(
self,
handler: H,
) -> Self
pub fn with_tool_handler<H: CompletionHandler + 'static>( self, handler: H, ) -> Self
Set the tool completion handler
Trait Implementations§
Source§impl CompletionHandler for CompositeCompletionHandler
impl CompletionHandler for CompositeCompletionHandler
Source§fn complete<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
reference: &'life1 CompletionReference,
argument: &'life2 CompletionArgument,
context: Option<&'life3 CompletionContext>,
) -> Pin<Box<dyn Future<Output = McpResult<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn complete<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
reference: &'life1 CompletionReference,
argument: &'life2 CompletionArgument,
context: Option<&'life3 CompletionContext>,
) -> Pin<Box<dyn Future<Output = McpResult<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Generate completion suggestions Read more
Source§impl Debug for CompositeCompletionHandler
impl Debug for CompositeCompletionHandler
Auto Trait Implementations§
impl !RefUnwindSafe for CompositeCompletionHandler
impl !UnwindSafe for CompositeCompletionHandler
impl Freeze for CompositeCompletionHandler
impl Send for CompositeCompletionHandler
impl Sync for CompositeCompletionHandler
impl Unpin for CompositeCompletionHandler
impl UnsafeUnpin for CompositeCompletionHandler
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].