pub enum ProcessResult {
AppMessage(Box<AppMessage>),
Proposal(Box<Proposal>),
Vote(Box<Vote>),
LeaveConversation,
MembershipChangeReceived(Box<ConversationUpdateRequest>),
JoinedConversation(String),
ConversationUpdated,
CommitCandidateReceived {
steward: Vec<u8>,
},
ConversationSyncReceived(Box<ConversationSync>),
Noop(NoopReason),
}Expand description
Outcome of processing one inbound packet. The app layer matches this directly and dispatches the side effects.
Heavy protobuf payloads (AppMessage, Proposal, Vote,
ConversationUpdateRequest, ConversationSync — each 88–144 bytes) are
boxed so the enum stays small. Without boxing the enum is sized to its
largest variant and every return / clone / match-move copies ~150 bytes;
with boxing it drops to ~32 bytes.
Variants§
AppMessage(Box<AppMessage>)
Decrypted application message ready to deliver to the UI.
Proposal(Box<Proposal>)
Consensus proposal from a peer — forward to the consensus service.
Vote(Box<Vote>)
Consensus vote from a peer — forward to the consensus service.
LeaveConversation
We were removed from the conversation.
MembershipChangeReceived(Box<ConversationUpdateRequest>)
Steward received a membership change (invite KP / ban) — start a vote.
JoinedConversation(String)
Successfully joined via a welcome message; carries the conversation name.
ConversationUpdated
MLS state advanced (batch commit applied).
CommitCandidateReceived
Remote commit candidate was buffered in the active freeze round.
steward is the wire-claimed identity from the candidate; the app
layer uses it for dispatch context (logging, scoring attribution).
ConversationSyncReceived(Box<ConversationSync>)
Conversation-sync message from the steward (steward list, scores, timing, protocol flags). Meaningful only for joiners with no steward list yet.
Noop(NoopReason)
Nothing to do. The reason variant names the specific case so the app layer can match precisely instead of relying on producer-side log lines for context.
Trait Implementations§
Source§impl Clone for ProcessResult
impl Clone for ProcessResult
Source§fn clone(&self) -> ProcessResult
fn clone(&self) -> ProcessResult
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ProcessResult
impl Debug for ProcessResult
Source§impl TryFrom<AppMessage> for ProcessResult
impl TryFrom<AppMessage> for ProcessResult
Auto Trait Implementations§
impl Freeze for ProcessResult
impl RefUnwindSafe for ProcessResult
impl Send for ProcessResult
impl Sync for ProcessResult
impl Unpin for ProcessResult
impl UnsafeUnpin for ProcessResult
impl UnwindSafe for ProcessResult
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Declassify for T
impl<T> Declassify for T
type Declassified = T
fn declassify(self) -> T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more