SessionInitiationStore

Session initiations from a remote device that must never become the current session again (see docs/session-lifecycle.md): initiations whose session was replaced, and initiations that lost a simultaneous-initiation collision. Kept per remote DeviceAddress. IDs are public values.

The client retires an ID in the same transaction that replaces the session or rejects the initiation, so the entry survives restarts together with that decision. Each entry may name the local signed prekey that accepting the initiation needs. Entries are removed only through removeRetiredFor, once that signed prekey is deleted for good and the initiation can no longer be accepted anyway (docs/signed-prekey-lifecycle.md). Entries without a signed prekey ID are kept forever.

Functions

Link copied to clipboard
abstract suspend fun isRetired(remote: DeviceAddress, id: SessionInitiationId): Boolean
Link copied to clipboard
abstract suspend fun removeRetiredFor(signedPreKeyId: SignedPreKeyId)

Removes every retired entry, of any remote device, that names signedPreKeyId.

Link copied to clipboard
abstract suspend fun retire(remote: DeviceAddress, id: SessionInitiationId, signedPreKeyId: SignedPreKeyId?)

Retires id for remote. signedPreKeyId is the local signed prekey the initiation was accepted with, or null if unknown or not a local key. Retiring an ID twice does nothing: the first entry is kept.

Link copied to clipboard
abstract suspend fun retiredSignedPreKeyIds(): Set<SignedPreKeyId>

The distinct signed prekey IDs that retired entries name, over all remote devices.