pub struct Silence { /* private fields */ }Expand description
Who may not speak, and who may not hear, as the rendered view says it.
The audio plane is the only place these flags mean anything: everywhere else they are an icon. Compiling them into the table rather than testing them per packet keeps the hot path free of the question, and makes a mute take effect on the very turn that announces it - the table is published before any view.
A flavor owns the flags, as it owns everything else it renders. What it does not own is whether a user it renders as muted can still be heard: a client showing a crossed-out microphone next to someone whose voice comes through is a lie the runtime would be telling on the flavor’s behalf.
Implementations§
Source§impl Silence
impl Silence
Sourcepub fn record(&mut self, session: SessionId, flags: UserFlags)
pub fn record(&mut self, session: SessionId, flags: UserFlags)
Record what one rendered user’s flags mean for the audio plane.
The two predicates are the reference server’s own, field for field.
REF: references/mumble/src/murmur/Server.cpp : processMsg drops the
packet before anything else when the speaker is
bMute || bSuppress || bSelfMute.
REF: references/mumble/src/murmur/AudioReceiverBuffer.cpp : addReceiver
refuses a receiver that is bDeaf || bSelfDeaf.