wx_rust_common/session/wx_session_manager.rs
1//! 微信会话管理器。
2//!
3//! 对应 Java `me.chanjar.weixin.common.session.WxSessionManager`。
4
5use std::sync::Arc;
6
7use super::wx_session::WxSession;
8
9/// 微信会话管理器。
10pub trait WxSessionManager: Send + Sync {
11 /// 获取某个 sessionId 对应的 session;如果不存在则新建一个并返回。
12 ///
13 /// # 参数
14 /// - `session_id`:会话 ID
15 ///
16 /// # 返回
17 /// 会话对象(不存在时新建)。同一 sessionId 多次调用返回同一对象
18 /// (对应 Java `session1 == session2` 语义)。
19 fn get_session(&self, session_id: &str) -> Arc<dyn WxSession>;
20
21 /// 获取某个 sessionId 对应的 session。
22 ///
23 /// # 参数
24 /// - `session_id`:会话 ID
25 /// - `create`:为 `true` 时不存在则新建;为 `false` 时不存在返回 `None`
26 ///
27 /// # 返回
28 /// 会话对象;`create=false` 且不存在时返回 `None`。
29 fn get_session_or_create(&self, session_id: &str, create: bool) -> Option<Arc<dyn WxSession>>;
30
31 /// 标记会话访问结束(对应 Java `InternalSession.endAccess`)。
32 ///
33 /// 由消息路由器在规则处理完毕后调用,使不活动计时从此刻重新开始。
34 /// 默认无操作;具体管理器可按需实现。
35 fn end_access(&self, _session_id: &str) {}
36}