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§
Sourcefn 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> ⓘ
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> ⓘ
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".