Skip to main content

ServerMessageObserverFactory

Trait ServerMessageObserverFactory 

Source
pub trait ServerMessageObserverFactory: Send + Sync {
    // Required method
    fn create_observer(
        &self,
        manager: Arc<ConnectionManager>,
        parser: MessageParser,
        event_handler: Arc<dyn ServerEventHandler>,
        connection_id: String,
        core_ref: Arc<ServerCoreRef>,
        core: Arc<ServerCore>,
    ) -> Arc<dyn ConnectionObserver> ;
}
Expand description

服务端消息观察者工厂

用于创建连接观察者,支持用户自定义实现

§设计原则

  • 依赖倒置:transports 依赖工厂接口,不依赖具体实现
  • 开闭原则:对扩展开放,对修改关闭
  • 单一职责:只负责创建观察者

§使用示例

use flare_core::server::events::factory::ServerMessageObserverFactory;

struct MyCustomObserverFactory;

impl ServerMessageObserverFactory for MyCustomObserverFactory {
    fn create_observer(
        &self,
        manager: Arc<ConnectionManager>,
        parser: MessageParser,
        event_handler: Arc<dyn crate::server::events::handler::ServerEventHandler>,
        connection_id: String,
        core_ref: Arc<ServerCoreRef>,
        core: Arc<crate::server::transports::server_core::ServerCore>,
    ) -> Arc<dyn ConnectionObserver> {
        // 创建自定义观察者
        Arc::new(MyCustomObserver::new(...))
    }
}

Required Methods§

Source

fn create_observer( &self, manager: Arc<ConnectionManager>, parser: MessageParser, event_handler: Arc<dyn ServerEventHandler>, connection_id: String, core_ref: Arc<ServerCoreRef>, core: Arc<ServerCore>, ) -> Arc<dyn ConnectionObserver>

为指定连接创建观察者

§参数
  • manager: 连接管理器
  • parser: 消息解析器
  • event_handler: 事件处理器(必需)
  • connection_id: 连接 ID
  • core_ref: 服务器核心的轻量级引用
  • core: 服务器核心的完整引用(用于需要完整功能的情况)
§返回

创建的观察者实例

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§