#[non_exhaustive]pub enum GossipPdu {
Status {
from: String,
version: VectorClock,
},
Envelope {
from: String,
version: VectorClock,
state: MembershipState,
},
Merge {
from: String,
version: VectorClock,
},
}Expand description
One gossip exchange. Sender hands a GossipStatus to the peer;
peer responds with either a full GossipEnvelope (if it has
newer state) or a GossipMerge request (if its state is older).
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
Status
“Here is my version vector — do you have newer state?”
Envelope
“Here’s my whole state, merge it in.”
Merge
“I’m older than you — please send me your envelope.”
Trait Implementations§
Source§impl<'de> Deserialize<'de> for GossipPdu
impl<'de> Deserialize<'de> for GossipPdu
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for GossipPdu
impl RefUnwindSafe for GossipPdu
impl Send for GossipPdu
impl Sync for GossipPdu
impl Unpin for GossipPdu
impl UnsafeUnpin for GossipPdu
impl UnwindSafe for GossipPdu
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
Mutably borrows from an owned value. Read more