Module emit

Module emit 

Source
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§

TextTarget
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 PermissionQuery about 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 UserStats about somebody else it can see.