Struct rustix::net::RecvAncillaryBuffer

source ·
pub struct RecvAncillaryBuffer<'buf> {
    buffer: &'buf mut [u8],
    read: usize,
    length: usize,
}
Expand description

Buffer for receiving ancillary messages with recvmsg.

Use the drain function to iterate over the received messages.

Fields§

§buffer: &'buf mut [u8]

Raw byte buffer for messages.

§read: usize

The portion of the buffer we’ve read from already.

§length: usize

The amount of the buffer that is used.

Implementations§

source§

impl<'buf> RecvAncillaryBuffer<'buf>

source

pub fn new(buffer: &'buf mut [u8]) -> Self

Create a new, empty RecvAncillaryBuffer from a raw byte buffer.

The buffer size may be computed with cmsg_space, or it may be zero for an empty buffer, however in that case, consider default() instead, or even using recv instead of recvmsg.

§Examples

Allocate a buffer for a single file descriptor:

let mut space = [0; rustix::cmsg_space!(ScmRights(1))];
let mut cmsg_buffer = RecvAncillaryBuffer::new(&mut space);

Allocate a buffer for credentials:

let mut space = [0; rustix::cmsg_space!(ScmCredentials(1))];
let mut cmsg_buffer = RecvAncillaryBuffer::new(&mut space);

Allocate a buffer for two file descriptors and credentials:

let mut space = [0; rustix::cmsg_space!(ScmRights(2), ScmCredentials(1))];
let mut cmsg_buffer = RecvAncillaryBuffer::new(&mut space);
source

pub(crate) fn as_control_ptr(&mut self) -> *mut u8

Returns a pointer to the message data.

source

pub(crate) fn control_len(&self) -> usize

Returns the length of the message data.

source

pub(crate) unsafe fn set_control_len(&mut self, len: usize)

Set the length of the message data.

§Safety

The buffer must be filled with valid message data.

source

pub(crate) fn clear(&mut self)

Delete all messages from the buffer.

source

pub fn drain(&mut self) -> AncillaryDrain<'_>

Drain all messages from the buffer.

Trait Implementations§

source§

impl<'buf> Default for RecvAncillaryBuffer<'buf>

source§

fn default() -> RecvAncillaryBuffer<'buf>

Returns the “default value” for a type. Read more
source§

impl Drop for RecvAncillaryBuffer<'_>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<'buf> From<&'buf mut [u8]> for RecvAncillaryBuffer<'buf>

source§

fn from(buffer: &'buf mut [u8]) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<'buf> Freeze for RecvAncillaryBuffer<'buf>

§

impl<'buf> RefUnwindSafe for RecvAncillaryBuffer<'buf>

§

impl<'buf> Send for RecvAncillaryBuffer<'buf>

§

impl<'buf> Sync for RecvAncillaryBuffer<'buf>

§

impl<'buf> Unpin for RecvAncillaryBuffer<'buf>

§

impl<'buf> !UnwindSafe for RecvAncillaryBuffer<'buf>

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.