Trait MessageRouter

pub trait MessageRouter: Send + Sync {
    // Required methods
    fn add_route(
        &mut self,
        pattern: TopicPattern,
        handler: Box<dyn MessageHandler>,
        priority: u32,
    ) -> Result<(), NerveError>;
    fn remove_route(&mut self, pattern: &TopicPattern) -> Result<(), NerveError>;
    fn route_message(
        &self,
        topic: &str,
        message: &Message,
    ) -> Result<(), NerveError>;
    fn statistics(&self) -> RoutingStatistics;
    fn clear_routes(&mut self) -> Result<(), NerveError>;
}
Expand description

Message router interface

Required Methods§

fn add_route( &mut self, pattern: TopicPattern, handler: Box<dyn MessageHandler>, priority: u32, ) -> Result<(), NerveError>

Add a route for a topic pattern

fn remove_route(&mut self, pattern: &TopicPattern) -> Result<(), NerveError>

Remove a route

fn route_message( &self, topic: &str, message: &Message, ) -> Result<(), NerveError>

Route a message to appropriate handlers

fn statistics(&self) -> RoutingStatistics

Get routing statistics

fn clear_routes(&mut self) -> Result<(), NerveError>

Clear all routes

Implementations on Foreign Types§

§

impl MessageRouter for ArrayTrieMessageRouter

§

fn add_route( &mut self, pattern: TopicPattern, handler: Box<dyn MessageHandler>, priority: u32, ) -> Result<(), NerveError>

§

fn remove_route(&mut self, pattern: &TopicPattern) -> Result<(), NerveError>

§

fn route_message( &self, topic: &str, message: &Message, ) -> Result<(), NerveError>

§

fn statistics(&self) -> RoutingStatistics

§

fn clear_routes(&mut self) -> Result<(), NerveError>

§

impl MessageRouter for AtomicTrieMessageRouter

§

fn add_route( &mut self, pattern: TopicPattern, handler: Box<dyn MessageHandler>, priority: u32, ) -> Result<(), NerveError>

§

fn remove_route(&mut self, pattern: &TopicPattern) -> Result<(), NerveError>

§

fn route_message( &self, topic: &str, message: &Message, ) -> Result<(), NerveError>

§

fn statistics(&self) -> RoutingStatistics

§

fn clear_routes(&mut self) -> Result<(), NerveError>

§

impl MessageRouter for EnhancedSoARouter

§

fn add_route( &mut self, pattern: TopicPattern, handler: Box<dyn MessageHandler>, priority: u32, ) -> Result<(), NerveError>

§

fn remove_route(&mut self, pattern: &TopicPattern) -> Result<(), NerveError>

§

fn route_message( &self, topic: &str, message: &Message, ) -> Result<(), NerveError>

§

fn statistics(&self) -> RoutingStatistics

§

fn clear_routes(&mut self) -> Result<(), NerveError>

§

impl MessageRouter for LockFreeMessageRouter

§

fn add_route( &mut self, pattern: TopicPattern, handler: Box<dyn MessageHandler>, priority: u32, ) -> Result<(), NerveError>

§

fn remove_route(&mut self, pattern: &TopicPattern) -> Result<(), NerveError>

§

fn route_message( &self, topic: &str, message: &Message, ) -> Result<(), NerveError>

§

fn statistics(&self) -> RoutingStatistics

§

fn clear_routes(&mut self) -> Result<(), NerveError>

§

impl MessageRouter for OptimizedArrayTrieMessageRouter

§

fn add_route( &mut self, pattern: TopicPattern, handler: Box<dyn MessageHandler>, priority: u32, ) -> Result<(), NerveError>

§

fn remove_route(&mut self, pattern: &TopicPattern) -> Result<(), NerveError>

§

fn route_message( &self, topic: &str, message: &Message, ) -> Result<(), NerveError>

§

fn statistics(&self) -> RoutingStatistics

§

fn clear_routes(&mut self) -> Result<(), NerveError>

§

impl MessageRouter for OptimizedMessageRouter

§

fn add_route( &mut self, pattern: TopicPattern, handler: Box<dyn MessageHandler>, priority: u32, ) -> Result<(), NerveError>

§

fn remove_route(&mut self, pattern: &TopicPattern) -> Result<(), NerveError>

§

fn route_message( &self, topic: &str, message: &Message, ) -> Result<(), NerveError>

§

fn statistics(&self) -> RoutingStatistics

§

fn clear_routes(&mut self) -> Result<(), NerveError>

§

impl MessageRouter for PerfectHashMessageRouter

§

fn add_route( &mut self, pattern: TopicPattern, handler: Box<dyn MessageHandler>, priority: u32, ) -> Result<(), NerveError>

§

fn remove_route(&mut self, pattern: &TopicPattern) -> Result<(), NerveError>

§

fn route_message( &self, topic: &str, message: &Message, ) -> Result<(), NerveError>

§

fn statistics(&self) -> RoutingStatistics

§

fn clear_routes(&mut self) -> Result<(), NerveError>

§

impl MessageRouter for SoAMessageRouter

§

fn add_route( &mut self, pattern: TopicPattern, handler: Box<dyn MessageHandler>, priority: u32, ) -> Result<(), NerveError>

§

fn remove_route(&mut self, pattern: &TopicPattern) -> Result<(), NerveError>

§

fn route_message( &self, topic: &str, message: &Message, ) -> Result<(), NerveError>

§

fn statistics(&self) -> RoutingStatistics

§

fn clear_routes(&mut self) -> Result<(), NerveError>

Implementors§