Skip to main content

DdsError

Enum DdsError 

Source
#[non_exhaustive]
pub enum DdsError {
Show 15 variants BadParameter { what: &'static str, }, PreconditionNotMet { reason: &'static str, }, WireError { message: String, }, InconsistentPolicy { what: &'static str, }, TransportError { label: &'static str, }, OutOfResources { what: &'static str, }, Timeout, Unsupported { feature: &'static str, }, NotAllowedBySecurity { what: &'static str, }, IllegalOperation { what: &'static str, }, ImmutablePolicy { policy: &'static str, }, AlreadyDeleted, NoData, Other { reason: &'static str, }, NotEnabled,
}
Expand description

Errors from DCPS operations. Roughly analogous to the spec ReturnCode_t enum; we omit RETCODE_OK (using Result::Ok instead) and merge BAD_PARAMETER + PRECONDITION_NOT_MET where the distinction doesn’t help.

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

BadParameter

Invalid parameter (e.g. an empty topic name).

Fields

§what: &'static str

Which parameter, briefly.

§

PreconditionNotMet

Operation does not fit the entity state (e.g. write on a DataWriter whose participant has been shut down).

Fields

§reason: &'static str

Short description.

§

WireError

Underlying wire/CDR operation failed.

Fields

§message: String

Message, static or dynamic.

§

InconsistentPolicy

QoS policy set is not consistent. Example: Reliability= Best-Effort + History=KeepAll without resource_limits — Spec §2.2.3 lists some incompatible combinations.

Fields

§what: &'static str

Which policy/policies collide.

§

TransportError

Transport operation failed.

Fields

§label: &'static str

Static label of the error.

§

OutOfResources

Resource limit reached (max_samples, max_instances, etc.).

Fields

§what: &'static str

Which limit.

§

Timeout

Timeout on a blocking operation (take_w_timeout, etc.).

§

Unsupported

Operation not implemented in v1.2.

Fields

§feature: &'static str

Short description.

§

NotAllowedBySecurity

Operation forbidden by the security policy — DDS-Security 1.2 §7.3.25, DCPS 1.4 §2.2.2.1.1 ReturnCode_t = NOT_ALLOWED_BY_SECURITY. The permissions/access plugin denied the read/write on a protected topic; the caller must not learn which permissions detail was the cause (information leak).

Fields

§what: &'static str

Short, security-noncritical description.

§

IllegalOperation

IllegalOperation — the operation does not fit structurally (e.g. write() on a DataReader). DCPS 1.4 §2.2.2.1.1 ReturnCode_t = ILLEGAL_OPERATION.

Fields

§what: &'static str

What does not work.

§

ImmutablePolicy

ImmutablePolicy — set_qos on a post-enable immutable QoS policy. DCPS 1.4 §2.2.2.1.1 ReturnCode_t = IMMUTABLE_POLICY.

Fields

§policy: &'static str

Which policy.

§

AlreadyDeleted

AlreadyDeleted — operation on a deleted entity. DCPS 1.4 §2.2.2.1.1 ReturnCode_t = ALREADY_DELETED.

§

NoData

NoData — read/take with no new samples. DCPS 1.4 §2.2.2.1.1 ReturnCode_t = NO_DATA. In practice often returned as an empty sample Vec rather than as an error.

§

Other

Error — generic, non-specific error. DCPS 1.4 §2.2.2.1.1 ReturnCode_t = ERROR. Last resort when no more specific variant fits; avoids an information leak toward the caller.

Fields

§reason: &'static str

Short description.

§

NotEnabled

NotEnabled — operation on an entity that has not yet been activated via enable(). DCPS 1.4 §2.2.2.1.1 ReturnCode_t = NOT_ENABLED. §2.1.2 — entities are disabled after create_* until enable(); many ops must then return NotEnabled.

Implementations§

Source§

impl DdsError

Source

pub fn as_return_code(&self) -> i32

Maps the error to the OMG ReturnCode_t integer value (DCPS 1.4 §2.2.2.1.1). WireError and TransportError are mapped to RETCODE_ERROR (1) — this is spec-conformant: both are unspecified implementation errors.

Trait Implementations§

Source§

impl Clone for DdsError

Source§

fn clone(&self) -> DdsError

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for DdsError

Source§

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

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

impl Display for DdsError

Source§

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

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

impl Eq for DdsError

Source§

impl Error for DdsError

Available on crate feature std only.
1.30.0 · Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl PartialEq for DdsError

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 StructuralPartialEq for DdsError

Auto Trait Implementations§

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> 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<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> 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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.