Expand description
Identifiers, and the allocator that keeps them stable.
Two rules are absolute on SessionId and ChannelId:
- Never reused. A withdrawn identifier is dead forever, because the Mumble client attaches local preferences (nickname overrides, per-user volume, channel filter mode) to them.
ChannelId::ROOTis the root, and it belongs to the runtime rather than to any shard.
SessionId is deliberately not ConnectionId: not everyone visible is
connected. The relation is SessionId ⊇ ConnectionId - an NPC, a player
outside Mumble or a bot has a session but no socket, no key and no cursor.
That is what Occupant::Synthetic is for.
REF: docs/design/guide-implementation.md 4
Structs§
- Action
Key - A flavor’s name for a context action, stable across renders.
- Channel
Id - A channel, as it goes on the wire.
- Channel
Key - A flavor-chosen stable identity for a channel.
- Connection
Id - A live connection: socket, crypto state, output queue.
- IdAllocator
- Maps stable identities onto wire identifiers until a channel is withdrawn.
- Session
Id - A visible user, as it goes on the wire.
- ShardId
- A shard: a unit of ownership, scheduling, rendering and id allocation.
- Shared
Ids - One allocator, shared by every shard of a runtime.
- Synthetic
Id - A visible user with no voice connection: NPC, out-of-Mumble player, bot.