Skip to main content

SendBuffer

Struct SendBuffer 

Source
pub struct SendBuffer { /* private fields */ }
Expand description

An owned, writable “zero-copy” software bus message buffer.

This struct safely manages a memory buffer allocated directly from CFE’s internal pool. You can get a writable view of it using MessageMut::from() and then send it with zero memory copies.

If the buffer is dropped without being sent, it is automatically released back to the CFE pool, preventing memory leaks.

Implementations§

Source§

impl SendBuffer

Source

pub fn new(size: usize) -> Result<Self>

Allocates a new zero-copy send buffer of the specified size from the CFE SB pool.

Source

pub fn send(self, is_origination: bool) -> Result<()>

Transmits the message in this buffer.

This consumes the SendBuffer, transferring ownership of the memory to CFE. After this call, the buffer is no longer accessible from Rust.

On failure, the caller still owns the buffer (state is unchanged) and the Drop impl will release it.

§Arguments
  • is_origination: Set to true to have CFE automatically fill in fields like sequence count and timestamp. Set to false when forwarding a message.
Source

pub fn view(&mut self) -> MessageMut<'_>

Returns a read-only slice view of the buffer’s contents.

Source

pub fn as_slice(&self) -> &[u8]

Returns the raw byte slice of the buffer’s contents.

Source

pub fn as_mut_slice(&mut self) -> &mut [u8]

Returns the raw mutable byte slice of the buffer’s contents.

Trait Implementations§

Source§

impl Debug for SendBuffer

Source§

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

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

impl Drop for SendBuffer

Source§

fn drop(&mut self)

Automatically releases the buffer back to the CFE pool if it hasn’t been sent.

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