47 lines
1.6 KiB
Rust
47 lines
1.6 KiB
Rust
use crate::sync_client::SyncClientID;
|
|
use crate::user::{APIClientID, UserID};
|
|
use ruma::api::client::sync::sync_events::v3::{GlobalAccountData, Presence, Rooms, ToDevice};
|
|
use ruma::api::client::sync::sync_events::DeviceLists;
|
|
|
|
#[derive(Debug, Clone, serde::Deserialize, serde::Serialize)]
|
|
pub struct SyncEvent {
|
|
/// Updates to rooms.
|
|
#[serde(default, skip_serializing_if = "Rooms::is_empty")]
|
|
pub rooms: Rooms,
|
|
|
|
/// Updates to the presence status of other users.
|
|
#[serde(default, skip_serializing_if = "Presence::is_empty")]
|
|
pub presence: Presence,
|
|
|
|
/// The global private data created by this user.
|
|
#[serde(default, skip_serializing_if = "GlobalAccountData::is_empty")]
|
|
pub account_data: GlobalAccountData,
|
|
|
|
/// Messages sent directly between devices.
|
|
#[serde(default, skip_serializing_if = "ToDevice::is_empty")]
|
|
pub to_device: ToDevice,
|
|
|
|
/// Information on E2E device updates.
|
|
///
|
|
/// Only present on an incremental sync.
|
|
#[serde(default, skip_serializing_if = "DeviceLists::is_empty")]
|
|
pub device_lists: DeviceLists,
|
|
}
|
|
|
|
/// Broadcast messages
|
|
#[derive(Debug, Clone)]
|
|
pub enum BroadcastMessage {
|
|
/// Request to close the session of a specific client
|
|
CloseClientSession(APIClientID),
|
|
/// Close all the sessions of a given user
|
|
CloseAllUserSessions(UserID),
|
|
/// Stop sync client for a given user
|
|
StopSyncTaskForUser(UserID),
|
|
/// Start sync client for a given user (if not already running)
|
|
StartSyncTaskForUser(UserID),
|
|
/// Stop a client with a given client ID
|
|
StopSyncClient(SyncClientID),
|
|
/// Propagate a new sync event
|
|
SyncEvent(UserID, SyncEvent),
|
|
}
|