Struct base::sys::unix::tube::Tube

source ·
pub struct Tube {
    socket: ScmSocket<StreamChannel>,
}
Expand description

Bidirectional tube that support both send and recv.

Fields§

§socket: ScmSocket<StreamChannel>

Implementations§

source§

impl Tube

source

pub fn split_to_send_recv(self) -> Result<(SendTube, RecvTube)>

Given a Tube end, creates two new ends, one each for sending and receiving.

source

pub fn directional_pair() -> Result<(SendTube, RecvTube)>

Creates a Send/Recv pair of Tubes.

source

pub fn try_clone_send_tube(&self) -> Result<SendTube>

source§

impl Tube

source

pub fn pair() -> Result<(Tube, Tube)>

Create a pair of connected tubes. Request is sent in one direction while response is in the other direction.

source

pub fn new(socket: StreamChannel) -> Result<Tube>

Create a new Tube from a StreamChannel. The StreamChannel must use FramingMode::Message (meaning, must use a SOCK_SEQPACKET as the underlying socket type), otherwise, this method returns an error.

source

pub fn new_from_unix_seqpacket(sock: UnixSeqpacket) -> Result<Tube>

Create a new Tube from a UnixSeqpacket. The StreamChannel is implicitly constructed to have the right FramingMode by being constructed from a UnixSeqpacket.

source

pub fn try_clone(&self) -> Result<Self>

👎Deprecated

DO NOT USE this method directly as it will become private soon (b/221484449). Use a directional Tube pair instead.

source

pub fn send<T: Serialize>(&self, msg: &T) -> Result<()>

Sends a message via a Tube. The number of file descriptors that this method can send is limited to TUBE_MAX_FDS. If you want to send more descriptors, use send_with_max_fds instead.

source

pub fn send_with_max_fds<T: Serialize>( &self, msg: &T, max_fds: usize ) -> Result<()>

Sends a message with at most max_fds file descriptors via a Tube. Note that max_fds must not exceed SCM_SOCKET_MAX_FD_COUNT (= 253).

source

pub fn recv<T: DeserializeOwned>(&self) -> Result<T>

Recieves a message from a Tube. If the sender sent file descriptors more than TUBE_MAX_FDS with send_with_max_fds, use recv_with_max_fds instead.

source

pub fn recv_with_max_fds<T: DeserializeOwned>( &self, max_fds: usize ) -> Result<T>

Recieves a message with at most max_fds file descriptors from a Tube.

source

pub fn set_send_timeout(&self, timeout: Option<Duration>) -> Result<()>

source

pub fn set_recv_timeout(&self, timeout: Option<Duration>) -> Result<()>

source

fn send_proto<M: Message>(&self, msg: &M) -> Result<()>

source

fn recv_proto<M: Message>(&self) -> Result<M>

Trait Implementations§

source§

impl AsRawDescriptor for Tube

source§

fn as_raw_descriptor(&self) -> RawDescriptor

Returns the underlying raw descriptor. Read more
source§

impl AsRawFd for Tube

source§

fn as_raw_fd(&self) -> RawFd

Extracts the raw file descriptor. Read more
source§

impl<'de> Deserialize<'de> for Tube

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl ReadNotifier for Tube

source§

fn get_read_notifier(&self) -> &dyn AsRawDescriptor

Gets a descriptor that can be used in EventContext to wait for events to be available (e.g. to avoid receive_events blocking).
source§

impl Serialize for Tube

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl RefUnwindSafe for Tube

§

impl Send for Tube

§

impl Sync for Tube

§

impl Unpin for Tube

§

impl UnwindSafe for Tube

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> AsRawDescriptors for T
where T: AsRawDescriptor,

source§

fn as_raw_descriptors(&self) -> Vec<i32>

Returns the underlying raw descriptors. 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>,

§

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

§

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

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,