Skip to main content

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}