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: MilliSecondsSinceUnixEpochLocal 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: DurationRelative 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: NotificationTypeHow 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_offsetis the maximum allowed offset between the two timestamps. (default 20s)origin_server_tshas 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> DeserialiseFromJs for Twhere
T: DeserializeOwned,
impl<T> DeserialiseFromJs for Twhere
T: DeserializeOwned,
§fn deserialise_from_js(js: JsValue) -> Result<T, Error>
fn deserialise_from_js(js: JsValue) -> Result<T, Error>
serde_wasm_bindgen.Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync 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§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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> SerialiseToJs for Twhere
T: Serialize,
impl<T> SerialiseToJs for Twhere
T: Serialize,
§fn serialise_to_js(&self) -> Result<JsValue, Error>
fn serialise_to_js(&self) -> Result<JsValue, Error>
JsValue, most likely using serde_wasm_bindgen.