Struct RtcNotificationEventContent
#[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§
§impl RtcNotificationEventContent
impl RtcNotificationEventContent
pub fn new(
sender_ts: MilliSecondsSinceUnixEpoch,
lifetime: Duration,
notification_type: NotificationType,
) -> RtcNotificationEventContent
pub fn new( sender_ts: MilliSecondsSinceUnixEpoch, lifetime: Duration, notification_type: NotificationType, ) -> RtcNotificationEventContent
Creates a new RtcNotificationEventContent
with the given configuration.
pub 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§
§impl Clone for RtcNotificationEventContent
impl Clone for RtcNotificationEventContent
§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 more§impl Debug for RtcNotificationEventContent
impl Debug for RtcNotificationEventContent
§impl<'de> Deserialize<'de> for RtcNotificationEventContent
impl<'de> Deserialize<'de> for RtcNotificationEventContent
§fn deserialize<__D>(
__deserializer: __D,
) -> Result<RtcNotificationEventContent, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<RtcNotificationEventContent, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
§impl From<RtcNotificationEventContent> for AnyMessageLikeEventContent
impl From<RtcNotificationEventContent> for AnyMessageLikeEventContent
§fn from(c: RtcNotificationEventContent) -> AnyMessageLikeEventContent
fn from(c: RtcNotificationEventContent) -> AnyMessageLikeEventContent
§impl MessageLikeEventContent for RtcNotificationEventContent
impl MessageLikeEventContent for RtcNotificationEventContent
§fn event_type(&self) -> MessageLikeEventType
fn event_type(&self) -> MessageLikeEventType
m.room.message
.§impl RedactContent for RtcNotificationEventContent
impl RedactContent for RtcNotificationEventContent
§type Redacted = RedactedRtcNotificationEventContent
type Redacted = RedactedRtcNotificationEventContent
§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§impl Serialize for RtcNotificationEventContent
impl Serialize for RtcNotificationEventContent
§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl JsonCastable<AnyMessageLikeEventContent> for RtcNotificationEventContent
impl JsonCastable<Map<String, Value>> for RtcNotificationEventContent
impl JsonCastable<RedactedRtcNotificationEventContent> for RtcNotificationEventContent
Auto Trait Implementations§
impl Freeze for RtcNotificationEventContent
impl RefUnwindSafe for RtcNotificationEventContent
impl Send for RtcNotificationEventContent
impl Sync for RtcNotificationEventContent
impl Unpin for RtcNotificationEventContent
impl UnwindSafe for RtcNotificationEventContent
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> CompatExt for T
impl<T> CompatExt for T
§impl<T> EventContentFromType for Twhere
T: StaticEventContent + DeserializeOwned,
impl<T> EventContentFromType for Twhere
T: StaticEventContent + DeserializeOwned,
Source§impl<T, UT> HandleAlloc<UT> for T
impl<T, UT> HandleAlloc<UT> for T
Source§fn consume_handle(handle: Handle) -> Arc<T>
fn consume_handle(handle: Handle) -> Arc<T>
Arc<>
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 more