pub struct HandlerRegistry {
pub tools: DashMap<String, Arc<dyn ToolHandler + 'static>>,
pub prompts: DashMap<String, Arc<dyn PromptHandler + 'static>>,
pub resources: DashMap<String, Arc<dyn ResourceHandler + 'static>>,
pub sampling: DashMap<String, Arc<dyn SamplingHandler + 'static>>,
pub logging: DashMap<String, Arc<dyn LoggingHandler + 'static>>,
pub roots: Arc<RwLock<Vec<Root>>>,
/* private fields */
}
Expand description
Handler registry for managing all server handlers
Fields§
§tools: DashMap<String, Arc<dyn ToolHandler + 'static>>
Tool handlers
prompts: DashMap<String, Arc<dyn PromptHandler + 'static>>
Prompt handlers
resources: DashMap<String, Arc<dyn ResourceHandler + 'static>>
Resource handlers
sampling: DashMap<String, Arc<dyn SamplingHandler + 'static>>
Sampling handlers
logging: DashMap<String, Arc<dyn LoggingHandler + 'static>>
Logging handlers
roots: Arc<RwLock<Vec<Root>>>
Filesystem roots
Implementations§
Source§impl HandlerRegistry
impl HandlerRegistry
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new handler registry
§Examples
use turbomcp_server::registry::HandlerRegistry;
let registry = HandlerRegistry::new();
// All collections start empty
assert_eq!(registry.tools.len(), 0);
assert_eq!(registry.prompts.len(), 0);
assert_eq!(registry.resources.len(), 0);
assert_eq!(registry.sampling.len(), 0);
assert_eq!(registry.logging.len(), 0);
Sourcepub fn with_config(config: RegistryConfig) -> Self
pub fn with_config(config: RegistryConfig) -> Self
Create a registry with configuration
Sourcepub fn register_tool<T>(
&self,
name: impl Into<String>,
handler: T,
) -> ServerResult<()>where
T: ToolHandler + 'static,
pub fn register_tool<T>(
&self,
name: impl Into<String>,
handler: T,
) -> ServerResult<()>where
T: ToolHandler + 'static,
Register a tool handler
Sourcepub fn register_prompt<P>(
&self,
name: impl Into<String>,
handler: P,
) -> ServerResult<()>where
P: PromptHandler + 'static,
pub fn register_prompt<P>(
&self,
name: impl Into<String>,
handler: P,
) -> ServerResult<()>where
P: PromptHandler + 'static,
Register a prompt handler
Sourcepub fn register_resource<R>(
&self,
name: impl Into<String>,
handler: R,
) -> ServerResult<()>where
R: ResourceHandler + 'static,
pub fn register_resource<R>(
&self,
name: impl Into<String>,
handler: R,
) -> ServerResult<()>where
R: ResourceHandler + 'static,
Register a resource handler
Sourcepub fn register_sampling<S>(
&self,
name: impl Into<String>,
handler: S,
) -> ServerResult<()>where
S: SamplingHandler + 'static,
pub fn register_sampling<S>(
&self,
name: impl Into<String>,
handler: S,
) -> ServerResult<()>where
S: SamplingHandler + 'static,
Register a sampling handler
Sourcepub fn register_logging<L>(
&self,
name: impl Into<String>,
handler: L,
) -> ServerResult<()>where
L: LoggingHandler + 'static,
pub fn register_logging<L>(
&self,
name: impl Into<String>,
handler: L,
) -> ServerResult<()>where
L: LoggingHandler + 'static,
Register a logging handler
Sourcepub fn get_prompt(&self, name: &str) -> Option<Arc<dyn PromptHandler>>
pub fn get_prompt(&self, name: &str) -> Option<Arc<dyn PromptHandler>>
Get a prompt handler by name
Sourcepub fn get_resource(&self, name: &str) -> Option<Arc<dyn ResourceHandler>>
pub fn get_resource(&self, name: &str) -> Option<Arc<dyn ResourceHandler>>
Get a resource handler by name
Sourcepub fn get_sampling(&self, name: &str) -> Option<Arc<dyn SamplingHandler>>
pub fn get_sampling(&self, name: &str) -> Option<Arc<dyn SamplingHandler>>
Get a sampling handler by name
Sourcepub fn get_logging(&self, name: &str) -> Option<Arc<dyn LoggingHandler>>
pub fn get_logging(&self, name: &str) -> Option<Arc<dyn LoggingHandler>>
Get a logging handler by name
Sourcepub fn list_tools(&self) -> Vec<String>
pub fn list_tools(&self) -> Vec<String>
List all tool names
Sourcepub fn list_prompts(&self) -> Vec<String>
pub fn list_prompts(&self) -> Vec<String>
List all prompt names
Sourcepub fn list_resources(&self) -> Vec<String>
pub fn list_resources(&self) -> Vec<String>
List all resource names
Sourcepub fn list_sampling(&self) -> Vec<String>
pub fn list_sampling(&self) -> Vec<String>
List all sampling names
Sourcepub fn list_logging(&self) -> Vec<String>
pub fn list_logging(&self) -> Vec<String>
List all logging names
Sourcepub fn get_tool_definitions(&self) -> Vec<Tool>
pub fn get_tool_definitions(&self) -> Vec<Tool>
Get all tool definitions
Sourcepub fn get_prompt_definitions(&self) -> Vec<Prompt>
pub fn get_prompt_definitions(&self) -> Vec<Prompt>
Get all prompt definitions
Sourcepub fn get_resource_definitions(&self) -> Vec<Resource>
pub fn get_resource_definitions(&self) -> Vec<Resource>
Get all resource definitions
Sourcepub fn clear_roots(&self)
pub fn clear_roots(&self)
Clear all roots
Sourcepub fn unregister_tool(&self, name: &str) -> bool
pub fn unregister_tool(&self, name: &str) -> bool
Unregister a tool handler
Sourcepub fn unregister_prompt(&self, name: &str) -> bool
pub fn unregister_prompt(&self, name: &str) -> bool
Unregister a prompt handler
Sourcepub fn unregister_resource(&self, name: &str) -> bool
pub fn unregister_resource(&self, name: &str) -> bool
Unregister a resource handler
Sourcepub fn stats(&self) -> RegistryStats
pub fn stats(&self) -> RegistryStats
Get registry statistics
Sourcepub fn get_metadata(&self, key: &str) -> Option<HandlerMetadata>
pub fn get_metadata(&self, key: &str) -> Option<HandlerMetadata>
Get handler metadata
Sourcepub fn update_config<F>(&self, f: F)where
F: FnOnce(&mut RegistryConfig),
pub fn update_config<F>(&self, f: F)where
F: FnOnce(&mut RegistryConfig),
Update registry configuration