Expand description
Typing, receipts, and read markers.
crate::typing::TypingRegistry is in memory. This module does not wake.
Structs§
Constants§
- DEFAULT_
TYPING_ TIMEOUT_ MS - Applied when a
PUT .../typing/{userId}body omitstimeoutandtyping: true— matchescrate::typing::TypingRegistry::set_typing’s own clamp ceiling (its privateTYPING_MAX_TIMEOUT_MS), so an omitted timeout behaves the same as the largest timeout a client could ask for.
Functions§
- apply_
read_ markers POST /read_markers’s whole DB-side decision (plan §4read_markersrow): Member, thenm.fully_read(stored verbatim as per-room account data for the caller, waking only their own devices) and/orm.read/m.read.private(each delegated toapply_receipt, which applies its own wake rule per type). Every field is independently optional — a call naming only one of the three touches only that one.- apply_
receipt POST /receipt/{receiptType}/{eventId}’s whole DB-side decision (plan §4receiptrow, and them.read/m.read.privatebranches ofPOST /read_markers): Member, then the target event must be visible to the caller (crate::store::visible_upper_bound— for ajoined member (the only membership this gate accepts) this is alwayscrate::store::HistoryWindow::Allunless aworld_readableroom’s event simply does not exist in THIS room at all, which the room-id filter below already catches), thencrate::store::upsert_receipt’s own monotonic upsert. ReturnsNone(no wake) when the upsert did not actually move the receipt forward — a backwards or repeat receipt is a silent no-op, detected here by comparing the receipt’sstream_idbefore and after the upsert, never by re-deriving the monotonic comparison a second time.- apply_
typing - check_
typing_ target - expired_
typing_ wake_ ids - require_
member