#[non_exhaustive]pub struct RtcNotificationEventContent {
pub sender_ts: MilliSecondsSinceUnixEpoch,
pub lifetime: Duration,
pub mentions: Option<Mentions>,
pub relates_to: Option<Reference>,
pub notification_type: NotificationType,
}
Expand description
The content of an m.rtc.notification
event.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.sender_ts: MilliSecondsSinceUnixEpoch
Local timestamp observed by the sender device.
Used with lifetime
to determine validity; receivers SHOULD compare with
origin_server_ts
and prefer it if the difference is large.
lifetime: Duration
Relative time from sender_ts
during which the notification is considered valid.
mentions: Option<Mentions>
Intentional mentions determining who should be notified.
relates_to: Option<Reference>
Optional reference to the related m.rtc.member
event.
notification_type: NotificationType
How this notification should notify the receiver.
Implementations§
Source§impl RtcNotificationEventContent
impl RtcNotificationEventContent
Sourcepub fn new(
sender_ts: MilliSecondsSinceUnixEpoch,
lifetime: Duration,
notification_type: NotificationType,
) -> Self
pub fn new( sender_ts: MilliSecondsSinceUnixEpoch, lifetime: Duration, notification_type: NotificationType, ) -> Self
Creates a new RtcNotificationEventContent
with the given configuration.
Sourcepub fn expiration_ts(
&self,
origin_server_ts: MilliSecondsSinceUnixEpoch,
max_sender_ts_offset: Option<u32>,
) -> MilliSecondsSinceUnixEpoch
pub fn expiration_ts( &self, origin_server_ts: MilliSecondsSinceUnixEpoch, max_sender_ts_offset: Option<u32>, ) -> MilliSecondsSinceUnixEpoch
Calculates the timestamp at which this notification is considered invalid.
This calculation is based on MSC4075 and tries to use the sender_ts
as the starting point
and the lifetime
as the duration for which the notification is valid.
The sender_ts
cannot be trusted since it is a generated value by the sending client.
To mitigate issue because of misconfigured client clocks, the MSC requires
that the origin_server_ts
is used as the starting point if the difference is large.
§Arguments:
max_sender_ts_offset
is the maximum allowed offset between the two timestamps. (default 20s)origin_server_ts
has to be set to the origin_server_ts from the event containing this event content.
§Examples
To start a timer until this client should stop ringing for this notification:
let duration_ring = MilliSecondsSinceUnixEpoch::now().saturated_sub(content.expiration_ts(event. origin_server_ts(), None));
Trait Implementations§
Source§impl Clone for RtcNotificationEventContent
impl Clone for RtcNotificationEventContent
Source§fn clone(&self) -> RtcNotificationEventContent
fn clone(&self) -> RtcNotificationEventContent
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for RtcNotificationEventContent
impl Debug for RtcNotificationEventContent
Source§impl<'de> Deserialize<'de> for RtcNotificationEventContent
impl<'de> Deserialize<'de> for RtcNotificationEventContent
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl From<RtcNotificationEventContent> for AnyMessageLikeEventContent
impl From<RtcNotificationEventContent> for AnyMessageLikeEventContent
Source§fn from(c: RtcNotificationEventContent) -> Self
fn from(c: RtcNotificationEventContent) -> Self
Source§impl MessageLikeEventContent for RtcNotificationEventContent
impl MessageLikeEventContent for RtcNotificationEventContent
Source§fn event_type(&self) -> MessageLikeEventType
fn event_type(&self) -> MessageLikeEventType
m.room.message
.Source§impl RedactContent for RtcNotificationEventContent
impl RedactContent for RtcNotificationEventContent
Source§type Redacted = RedactedRtcNotificationEventContent
type Redacted = RedactedRtcNotificationEventContent
Source§fn redact(self, _rules: &RedactionRules) -> RedactedRtcNotificationEventContent
fn redact(self, _rules: &RedactionRules) -> RedactedRtcNotificationEventContent
self
into a redacted form (removing most or all fields) according to the spec. Read more