pub struct OnlineManager { /* private fields */ }Expand description
Online user manager 在线用户管理器
Manages online users and handles real-time message pushing 管理在线用户并处理实时消息推送
Implementations§
Source§impl OnlineManager
impl OnlineManager
Sourcepub fn new() -> OnlineManager
pub fn new() -> OnlineManager
Sourcepub async fn register_pusher(&self, pusher: Arc<dyn MessagePusher>)
pub async fn register_pusher(&self, pusher: Arc<dyn MessagePusher>)
Sourcepub async fn mark_online(&self, user: OnlineUser)
pub async fn mark_online(&self, user: OnlineUser)
Mark a user as online 标记用户上线
§Arguments | 参数
user- Online user information | 在线用户信息
§Example | 示例
let user = OnlineUser {
login_id: "user123".to_string(),
token: "token123".to_string(),
device: "web".to_string(),
connect_time: Utc::now(),
last_activity: Utc::now(),
metadata: HashMap::new(),
};
manager.mark_online(user).await;Sourcepub async fn mark_offline(&self, login_id: &str, token: &str)
pub async fn mark_offline(&self, login_id: &str, token: &str)
Sourcepub async fn mark_offline_all(&self, login_id: &str)
pub async fn mark_offline_all(&self, login_id: &str)
Sourcepub async fn get_online_count(&self) -> usize
pub async fn get_online_count(&self) -> usize
Sourcepub async fn get_online_users(&self) -> Vec<String>
pub async fn get_online_users(&self) -> Vec<String>
Sourcepub async fn get_user_sessions(&self, login_id: &str) -> Vec<OnlineUser>
pub async fn get_user_sessions(&self, login_id: &str) -> Vec<OnlineUser>
Sourcepub async fn update_activity(&self, login_id: &str, token: &str)
pub async fn update_activity(&self, login_id: &str, token: &str)
Sourcepub async fn push_to_user(
&self,
login_id: &str,
content: String,
) -> Result<(), SaTokenError>
pub async fn push_to_user( &self, login_id: &str, content: String, ) -> Result<(), SaTokenError>
Sourcepub async fn push_to_users(
&self,
login_ids: Vec<String>,
content: String,
) -> Result<(), SaTokenError>
pub async fn push_to_users( &self, login_ids: Vec<String>, content: String, ) -> Result<(), SaTokenError>
Sourcepub async fn push_message_to_user(
&self,
login_id: &str,
message: PushMessage,
) -> Result<(), SaTokenError>
pub async fn push_message_to_user( &self, login_id: &str, message: PushMessage, ) -> Result<(), SaTokenError>
Push a custom message to a user 向用户推送自定义消息
§Arguments | 参数
login_id- User login ID | 用户登录 IDmessage- Custom push message | 自定义推送消息
§Example | 示例
let message = PushMessage {
message_id: uuid::Uuid::new_v4().to_string(),
content: "Custom content".to_string(),
message_type: MessageType::Custom("event".to_string()),
timestamp: Utc::now(),
metadata: HashMap::new(),
};
manager.push_message_to_user("user123", message).await?;Sourcepub async fn kick_out_notify(
&self,
login_id: &str,
reason: String,
) -> Result<(), SaTokenError>
pub async fn kick_out_notify( &self, login_id: &str, reason: String, ) -> Result<(), SaTokenError>
Trait Implementations§
Source§impl Default for OnlineManager
impl Default for OnlineManager
Source§fn default() -> OnlineManager
fn default() -> OnlineManager
Auto Trait Implementations§
impl Freeze for OnlineManager
impl !RefUnwindSafe for OnlineManager
impl Send for OnlineManager
impl Sync for OnlineManager
impl Unpin for OnlineManager
impl !UnwindSafe for OnlineManager
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);