Expand description
Translating a composed transition into Mumble control messages.
crate::plan deliberately stops at view mutations: a PlanOp says what
changes, never which frame carries it. This module is the only place in
the crate that knows both vocabularies, and keeping it pure - no socket, no
queue - is what lets the ordering rules be tested against the message stream
itself.
§The one constraint the plan cannot express
A connection must be introduced to itself before it is introduced to anyone
else, because ServerSync makes the client look its own session up. The plan
has no notion of “self” - that is a connection notion, not a view notion - so
the rule is applied here, by reordering inside a run of consecutive
AddUser operations and never across the whole sequence. Hoisting the self
user to the front would place it before the CreateChannel of its own
channel, breaking one rule to satisfy another. The planner groups user
additions together, so a run is exactly the set among which order is free.
Modules§
- perm
- Effective-permission bits, as the Mumble client understands them.
Enums§
- Text
Target - Where a text message is aimed, in the wire’s vocabulary.
Functions§
- action_
key - Read back what a client echoed, refusing anything this server did not write.
- action_
name - The wire name of an action key.
- actions
- What one connection must be told so its menu matches
fresh. - denied_
permission - Refuse something a connection asked to do in a channel it can see.
- emit
- Translate a composed transition into ordered control messages.
- permission_
query - The reply to a client’s
PermissionQueryabout one visible channel. - permissions_
of - What a connection may do in a channel it can see, derived from the render.
- relayed
- Carry one connection’s words to one recipient.
- spoken
- Spell what a flavor said to one connection.
- user_
stats - The reply to a client’s
UserStatsabout somebody else it can see.