Struct FaultHandler

Source
pub struct FaultHandler<UserHandler: UserFaultHookProvider> {
    pub user_hook: RefCell<UserHandler>,
    /* private fields */
}
Expand description

This structure is used to implement the fault handling as specified in chapter 4.8 of the CFDP standard.

It does so by mapping each applicable spacepackets::cfdp::ConditionCode to a fault handler which is denoted by the four spacepackets::cfdp::FaultHandlerCodes. This code is used to select the error handling inside the CFDP handler itself in addition to dispatching to a user-provided callback function provided by the UserFaultHookProvider.

Some note on the provided default settings:

  • Checksum failures will be ignored by default. This is because for unacknowledged transfers, cancelling the transfer immediately would interfere with the check limit mechanism specified in chapter 4.6.3.3.
  • Unsupported checksum types will also be ignored by default. Even if the checksum type is not supported the file transfer might still have worked properly.

For all other faults, the default fault handling operation will be to cancel the transaction. These defaults can be overriden by using the Self::set_fault_handler method. Please note that in any case, fault handler overrides can be specified by the sending CFDP entity.

Fields§

§user_hook: RefCell<UserHandler>

Implementations§

Source§

impl<UserHandler: UserFaultHookProvider> FaultHandler<UserHandler>

Source

pub fn set_fault_handler( &mut self, condition_code: ConditionCode, fault_handler: FaultHandlerCode, )

Source

pub fn new(user_fault_handler: UserHandler) -> Self

Source

pub fn get_fault_handler( &self, condition_code: ConditionCode, ) -> FaultHandlerCode

Source

pub fn report_fault( &self, transaction_id: TransactionId, condition: ConditionCode, progress: u64, ) -> FaultHandlerCode

Auto Trait Implementations§

§

impl<UserHandler> !Freeze for FaultHandler<UserHandler>

§

impl<UserHandler> !RefUnwindSafe for FaultHandler<UserHandler>

§

impl<UserHandler> Send for FaultHandler<UserHandler>
where UserHandler: Send,

§

impl<UserHandler> !Sync for FaultHandler<UserHandler>

§

impl<UserHandler> Unpin for FaultHandler<UserHandler>
where UserHandler: Unpin,

§

impl<UserHandler> UnwindSafe for FaultHandler<UserHandler>
where UserHandler: UnwindSafe,

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