SendError

Enum SendError 

Source
pub enum SendError {
Show 15 variants IdentityMissing, PeerMissing, PairwiseKeysMissing, IdentityAgreementFailed, ChannelMissing, PolicyViolation, AckUnsupported, EncryptionUnsupported, SaltUnsupported, Build(BuildError), Parse(ParseError), Crypto(CryptoError), QueueFull, PendingAckFull, CounterPersistenceLag,
}
Expand description

Errors returned by the Mac coordinator when queueing an outbound send.

Returned synchronously by queue_broadcast, queue_unicast, queue_multicast, and related methods. An error here means the send could not be enqueued — it says nothing about the fate of frames already in the transmit queue.

Variants§

§

IdentityMissing

The LocalIdentityId passed to the queue call does not correspond to an occupied identity slot. This indicates the identity was never registered or was removed.

§

PeerMissing

The destination umsh_core::PublicKey is not present in the peer registry. Register the peer first via Mac::add_peer.

§

PairwiseKeysMissing

No cached pairwise session keys exist for the target peer on this identity. This is only returned by the low-level queue_* APIs; the public async send APIs derive and cache peer state automatically.

§

IdentityAgreementFailed

The local identity failed to derive a shared secret for this peer.

§

ChannelMissing

The target umsh_core::ChannelId is not present in the channel table. Register the channel first via Mac::add_channel or Mac::add_named_channel.

§

PolicyViolation

The OperatingPolicy rejected this send — for example, attempting to send an encrypted frame while operating in AmateurRadioMode::LicensedOnly mode.

§

AckUnsupported

The requested packet type does not support transport ACKs (e.g., broadcast).

§

EncryptionUnsupported

The requested encryption mode is not valid for this packet type.

§

SaltUnsupported

The requested salt option is not valid for this packet type.

§

Build(BuildError)

The low-level packet builder failed, typically because the frame buffer is too small for the requested options and payload.

§

Parse(ParseError)

Packet parsing failed while reprocessing a freshly-built frame, indicating an internal inconsistency in the packet construction logic.

§

Crypto(CryptoError)

The cryptographic seal operation failed. This typically indicates a mismatched key length or an internal crypto engine error.

§

QueueFull

The transmit queue is at the configured TX capacity. Back off and retry after the event loop has drained some entries.

§

PendingAckFull

The in-flight ACK table for this identity is at the configured ACKS capacity. Wait for an existing ACK-requested send to complete or time out before sending another.

§

CounterPersistenceLag

Secure sends are blocked because the live frame counter has reached the persisted reservation boundary. Call Mac::service_counter_persistence to flush a new boundary to the counter store before retrying.

Trait Implementations§

Source§

impl Clone for SendError

Source§

fn clone(&self) -> SendError

Returns a duplicate of the value. Read more
1.0.0§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for SendError

Source§

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

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

impl From<BuildError> for SendError

Source§

fn from(value: BuildError) -> Self

Converts to this type from the input type.
Source§

impl From<CryptoError> for SendError

Source§

fn from(value: CryptoError) -> Self

Converts to this type from the input type.
Source§

impl From<ParseError> for SendError

Source§

fn from(value: ParseError) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for SendError

Source§

fn eq(&self, other: &SendError) -> bool

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

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 Eq for SendError

Source§

impl StructuralPartialEq for SendError

Auto Trait Implementations§

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

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

§

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
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

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> Same for T

Source§

type Output = T

Should always be Self
§

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

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

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

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

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

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.