Module ids

Module ids 

Source
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::ROOT is 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 SessionIdConnectionId - 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§

ActionKey
A flavor’s name for a context action, stable across renders.
ChannelId
A channel, as it goes on the wire.
ChannelKey
A flavor-chosen stable identity for a channel.
ConnectionId
A live connection: socket, crypto state, output queue.
IdAllocator
Maps stable identities onto wire identifiers until a channel is withdrawn.
SessionId
A visible user, as it goes on the wire.
ShardId
A shard: a unit of ownership, scheduling, rendering and id allocation.
SharedIds
One allocator, shared by every shard of a runtime.
SyntheticId
A visible user with no voice connection: NPC, out-of-Mumble player, bot.

Enums§

Exhausted
The identifier space is exhausted.
Occupant
Who occupies a rendered user slot.