Message

Enum Message 

Source
#[non_exhaustive]
pub enum Message<I, A> { Ping(Ping<I, A>), IndirectPing(IndirectPing<I, A>), Ack(Ack), Suspect(Suspect<I>), Alive(Alive<I, A>), Dead(Dead<I>), PushPull(PushPull<I, A>), UserData(Bytes), Nack(Nack), ErrorResponse(ErrorResponse), }
Expand description

Request to be sent to the Raft node.

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

Ping(Ping<I, A>)

Ping message

§

IndirectPing(IndirectPing<I, A>)

Indirect ping message

§

Ack(Ack)

Ack response message

§

Suspect(Suspect<I>)

Suspect message

§

Alive(Alive<I, A>)

Alive message

§

Dead(Dead<I>)

Dead message

§

PushPull(PushPull<I, A>)

PushPull message

§

UserData(Bytes)

User mesg, not handled by us

§

Nack(Nack)

Nack response message

§

ErrorResponse(ErrorResponse)

Error response message

Implementations§

Source§

impl<I, A> Message<I, A>

Source

pub const PING_TAG: u8 = 1u8

The tag of Ping message.

Source

pub const INDIRECTPING_TAG: u8 = 2u8

The tag of IndirectPing message.

Source

pub const ACK_TAG: u8 = 3u8

The tag of Ack message.

Source

pub const SUSPECT_TAG: u8 = 4u8

The tag of Suspect message.

Source

pub const ALIVE_TAG: u8 = 5u8

The tag of Alive message.

Source

pub const DEAD_TAG: u8 = 6u8

The tag of Dead message.

Source

pub const PUSHPULL_TAG: u8 = 7u8

The tag of PushPull message.

Source

pub const USERDATA_TAG: u8 = 8u8

The tag of Bytes message.

Source

pub const NACK_TAG: u8 = 9u8

The tag of Nack message.

Source

pub const ERRORRESPONSE_TAG: u8 = 10u8

The tag of ErrorResponse message.

Source

pub const fn tag(&self) -> u8

Returns the tag of this message type for encoding/decoding.

Source

pub const fn kind(&self) -> &'static str

Returns the kind of this message.

Source

pub fn unwrap_ping(self) -> Ping<I, A>

Returns the contained Ping message, consuming the self value. Panics if the value is not Ping.

Source

pub fn try_unwrap_ping(self) -> Option<Ping<I, A>>

Returns the contained Ping message, consuming the self value. Returns None if the value is not Ping.

Source

pub const fn ping(val: Ping<I, A>) -> Self

Construct a Message from Ping.

Source

pub fn unwrap_indirect_ping(self) -> IndirectPing<I, A>

Returns the contained IndirectPing message, consuming the self value. Panics if the value is not IndirectPing.

Source

pub fn try_unwrap_indirect_ping(self) -> Option<IndirectPing<I, A>>

Returns the contained IndirectPing message, consuming the self value. Returns None if the value is not IndirectPing.

Source

pub const fn indirect_ping(val: IndirectPing<I, A>) -> Self

Construct a Message from IndirectPing.

Source

pub fn unwrap_ack(self) -> Ack

Returns the contained Ack message, consuming the self value. Panics if the value is not Ack.

Source

pub fn try_unwrap_ack(self) -> Option<Ack>

Returns the contained Ack message, consuming the self value. Returns None if the value is not Ack.

Source

pub const fn ack(val: Ack) -> Self

Construct a Message from Ack.

Source

pub fn unwrap_suspect(self) -> Suspect<I>

Returns the contained Suspect message, consuming the self value. Panics if the value is not Suspect.

Source

pub fn try_unwrap_suspect(self) -> Option<Suspect<I>>

Returns the contained Suspect message, consuming the self value. Returns None if the value is not Suspect.

Source

pub const fn suspect(val: Suspect<I>) -> Self

Construct a Message from Suspect.

Source

pub fn unwrap_alive(self) -> Alive<I, A>

Returns the contained Alive message, consuming the self value. Panics if the value is not Alive.

Source

pub fn try_unwrap_alive(self) -> Option<Alive<I, A>>

Returns the contained Alive message, consuming the self value. Returns None if the value is not Alive.

Source

pub const fn alive(val: Alive<I, A>) -> Self

Construct a Message from Alive.

Source

pub fn unwrap_dead(self) -> Dead<I>

Returns the contained Dead message, consuming the self value. Panics if the value is not Dead.

Source

pub fn try_unwrap_dead(self) -> Option<Dead<I>>

Returns the contained Dead message, consuming the self value. Returns None if the value is not Dead.

Source

pub const fn dead(val: Dead<I>) -> Self

Construct a Message from Dead.

Source

pub fn unwrap_push_pull(self) -> PushPull<I, A>

Returns the contained PushPull message, consuming the self value. Panics if the value is not PushPull.

Source

pub fn try_unwrap_push_pull(self) -> Option<PushPull<I, A>>

Returns the contained PushPull message, consuming the self value. Returns None if the value is not PushPull.

Source

pub const fn push_pull(val: PushPull<I, A>) -> Self

Construct a Message from PushPull.

Source

pub fn unwrap_user_data(self) -> Bytes

Returns the contained Bytes message, consuming the self value. Panics if the value is not Bytes.

Source

pub fn try_unwrap_user_data(self) -> Option<Bytes>

Returns the contained Bytes message, consuming the self value. Returns None if the value is not Bytes.

Source

pub const fn user_data(val: Bytes) -> Self

Construct a Message from Bytes.

Source

pub fn unwrap_nack(self) -> Nack

Returns the contained Nack message, consuming the self value. Panics if the value is not Nack.

Source

pub fn try_unwrap_nack(self) -> Option<Nack>

Returns the contained Nack message, consuming the self value. Returns None if the value is not Nack.

Source

pub const fn nack(val: Nack) -> Self

Construct a Message from Nack.

Source

pub fn unwrap_error_response(self) -> ErrorResponse

Returns the contained ErrorResponse message, consuming the self value. Panics if the value is not ErrorResponse.

Source

pub fn try_unwrap_error_response(self) -> Option<ErrorResponse>

Returns the contained ErrorResponse message, consuming the self value. Returns None if the value is not ErrorResponse.

Source

pub const fn error_response(val: ErrorResponse) -> Self

Construct a Message from ErrorResponse.

Source§

impl<I, A> Message<I, A>

Source

pub const RESERVED_TAG_RANGE: RangeInclusive<u8>

Defines the range of reserved tags for message types.

This constant specifies a range of tag values that are reserved for internal use by the Message enum variants. When implementing custom with Wire or Transport, it is important to ensure that any custom header added to the message bytes does not start with a tag value within this reserved range.

The reserved range is 0..=128, meaning that the first byte of any custom message must not fall within this range to avoid conflicts with predefined message types.

§Note

Adhering to this constraint is crucial for ensuring that custom messages are correctly distinguishable from the standard messages defined by the Message enum. Failing to do so may result in incorrect message parsing and handling.

Source

pub const COMPOUND_TAG: u8 = 0u8

Returns the tag of the compound message type for encoding/decoding.

Trait Implementations§

Source§

impl<I: Clone, A: Clone> Clone for Message<I, A>

Source§

fn clone(&self) -> Message<I, A>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<I: Debug, A: Debug> Debug for Message<I, A>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de, I, A> Deserialize<'de> for Message<I, A>
where I: Deserialize<'de>, A: Deserialize<'de>,

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<I, A> From<Ack> for Message<I, A>

Source§

fn from(value: Ack) -> Self

Converts to this type from the input type.
Source§

impl<I, A> From<Alive<I, A>> for Message<I, A>

Source§

fn from(value: Alive<I, A>) -> Self

Converts to this type from the input type.
Source§

impl<I, A> From<Bytes> for Message<I, A>

Source§

fn from(value: Bytes) -> Self

Converts to this type from the input type.
Source§

impl<I, A> From<Dead<I>> for Message<I, A>

Source§

fn from(value: Dead<I>) -> Self

Converts to this type from the input type.
Source§

impl<I, A> From<ErrorResponse> for Message<I, A>

Source§

fn from(value: ErrorResponse) -> Self

Converts to this type from the input type.
Source§

impl<I, A> From<IndirectPing<I, A>> for Message<I, A>

Source§

fn from(value: IndirectPing<I, A>) -> Self

Converts to this type from the input type.
Source§

impl<I, A> From<Nack> for Message<I, A>

Source§

fn from(value: Nack) -> Self

Converts to this type from the input type.
Source§

impl<I, A> From<Ping<I, A>> for Message<I, A>

Source§

fn from(value: Ping<I, A>) -> Self

Converts to this type from the input type.
Source§

impl<I, A> From<PushPull<I, A>> for Message<I, A>

Source§

fn from(value: PushPull<I, A>) -> Self

Converts to this type from the input type.
Source§

impl<I, A> From<Suspect<I>> for Message<I, A>

Source§

fn from(value: Suspect<I>) -> Self

Converts to this type from the input type.
Source§

impl<I: Hash, A: Hash> Hash for Message<I, A>

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<I: PartialEq, A: PartialEq> PartialEq for Message<I, A>

Source§

fn eq(&self, other: &Message<I, A>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<I, A> Serialize for Message<I, A>
where I: Serialize, A: Serialize,

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<I, A> Transformable for Message<I, A>

Source§

type Error = MessageTransformError<I, A>

The error type returned when encoding or decoding fails.
Source§

fn encode(&self, dst: &mut [u8]) -> Result<usize, Self::Error>

Encodes the value into the given buffer for transmission. Read more
Source§

fn encoded_len(&self) -> usize

Returns the encoded length of the value. This is used to pre-allocate a buffer for encoding.
Source§

fn decode(src: &[u8]) -> Result<(usize, Self), Self::Error>
where Self: Sized,

Decodes the value from the given buffer received over the wire. Read more
Source§

fn decode_from_reader<R: Read>(reader: &mut R) -> Result<(usize, Self)>
where Self: Sized,

Available on crate feature std only.
Decodes the value from the given reader received over the wire. Read more
Source§

async fn decode_from_async_reader<R: AsyncRead + Send + Unpin>( reader: &mut R, ) -> Result<(usize, Self)>
where Self: Sized,

Available on crate feature async only.
Decodes the value from the given async reader received over the wire. Read more
Source§

fn encode_to_vec(&self) -> Result<Vec<u8>, Self::Error>

Available on crate features alloc or std only.
Encodes the value into a vec for transmission.
Source§

fn encode_to_writer<W>(&self, writer: &mut W) -> Result<usize, Error>
where W: Write,

Available on crate feature std only.
Encodes the value into the given writer for transmission.
Source§

fn encode_to_async_writer<W>( &self, writer: &mut W, ) -> impl Future<Output = Result<usize, Error>> + Send
where W: AsyncWrite + Send + Unpin,

Available on crate feature async only.
Encodes the value into the given async writer for transmission.
Source§

impl<I: Eq, A: Eq> Eq for Message<I, A>

Source§

impl<I, A> StructuralPartialEq for Message<I, A>

Auto Trait Implementations§

§

impl<I, A> !Freeze for Message<I, A>

§

impl<I, A> RefUnwindSafe for Message<I, A>

§

impl<I, A> Send for Message<I, A>
where I: Send + Sync, A: Send + Sync,

§

impl<I, A> Sync for Message<I, A>
where I: Sync + Send, A: Sync + Send,

§

impl<I, A> Unpin for Message<I, A>
where I: Unpin, A: Unpin,

§

impl<I, A> UnwindSafe for Message<I, A>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<K, Q> Comparable<Q> for K
where K: Borrow<Q> + ?Sized, Q: Ord + ?Sized,

Source§

fn compare(&self, key: &Q) -> Ordering

Compare self to key and return their ordering.
Source§

impl<T> Decodable for T
where T: Transformable,

Source§

type Error = <T as Transformable>::Error

The error type returned when encoding or decoding fails.
Source§

fn decode(src: &[u8]) -> Result<(usize, T), <T as Decodable>::Error>

Decodes the value from the given buffer received over the wire. Read more
Source§

fn decode_from_reader<R>(reader: &mut R) -> Result<(usize, T), Error>
where R: Read,

Available on crate feature std only.
Decodes the value from the given reader received over the wire. Read more
Source§

fn decode_from_async_reader<R>( reader: &mut R, ) -> impl Future<Output = Result<(usize, T), Error>> + Send
where R: AsyncRead + Send + Unpin, T: Send,

Available on crate feature async only.
Decodes the value from the given async reader received over the wire. Read more
Source§

impl<T> Encodable for T
where T: Transformable,

Source§

type Error = <T as Transformable>::Error

The error type returned when encoding or decoding fails.
Source§

fn encode(&self, dst: &mut [u8]) -> Result<usize, <T as Encodable>::Error>

Encodes the value into the given buffer for transmission. Read more
Source§

fn encoded_len(&self) -> usize

Returns the encoded length of the value. This is used to pre-allocate a buffer for encoding.
Source§

fn encode_to_vec(&self) -> Result<Vec<u8>, <T as Encodable>::Error>

Available on crate features alloc or std only.
Encodes the value into a vec for transmission.
Source§

fn encode_to_writer<W>(&self, writer: &mut W) -> Result<usize, Error>
where W: Write,

Available on crate feature std only.
Encodes the value into the given writer for transmission.
Source§

fn encode_to_async_writer<W>( &self, writer: &mut W, ) -> impl Future<Output = Result<usize, Error>> + Send
where W: AsyncWrite + Send + Unpin,

Available on crate feature async only.
Encodes the value into the given async writer for transmission.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<K, Q> Equivalent<Q> for K
where K: Borrow<Q> + ?Sized, Q: Eq + ?Sized,

Source§

fn equivalent(&self, key: &Q) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,