pub struct RoomAnnouncement {
pub room_id: String,
pub name: String,
pub encrypted: bool,
pub passphrase_salt: Option<Vec<u8>>,
pub member_count: u32,
pub creator_fingerprint: String,
pub announced_at: i64,
pub owner_fingerprints: Vec<String>,
pub verified_only: bool,
}Expand description
Broadcast on the global ROOMS_TOPIC. Each peer republishes the rooms they’re currently in, periodically. Listeners maintain a cache with TTL.
Fields§
§room_id: String§name: String§encrypted: bool§passphrase_salt: Option<Vec<u8>>Argon2id salt — present iff encrypted. Joiners derive their
passphrase key from (passphrase, salt) to unwrap session keys.
member_count: u32§creator_fingerprint: String§announced_at: i64Seconds since UNIX_EPOCH when this announcement was emitted.
owner_fingerprints: Vec<String>Phase B: fingerprints with role = ‘owner’ — the soft moderator
set. Newcomers learn from this who’s authorized to grant other
owners and to issue bans (signed via SignedRoomMessage).
#[serde(default)] for forward-compat with pre-0.3 senders.
verified_only: boolPhase E: when true, existing members refuse to wrap their
session key for a joiner whose fingerprint isn’t in the
global verified_peers set. Joiner sees a JoinRefused
reply from at least one owner so the UX isn’t a silent hang.
#[serde(default)] so pre-0.3 senders default to permissive.
Trait Implementations§
Source§impl Clone for RoomAnnouncement
impl Clone for RoomAnnouncement
Source§fn clone(&self) -> RoomAnnouncement
fn clone(&self) -> RoomAnnouncement
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RoomAnnouncement
impl Debug for RoomAnnouncement
Source§impl<'de> Deserialize<'de> for RoomAnnouncement
impl<'de> Deserialize<'de> for RoomAnnouncement
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>,
Auto Trait Implementations§
impl Freeze for RoomAnnouncement
impl RefUnwindSafe for RoomAnnouncement
impl Send for RoomAnnouncement
impl Sync for RoomAnnouncement
impl Unpin for RoomAnnouncement
impl UnsafeUnpin for RoomAnnouncement
impl UnwindSafe for RoomAnnouncement
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,
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> 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