Spec-Zone.ru › Tokio

Struct OpenOptions

pub struct OpenOptions { /* private fields */ }
Available on Unix and crate feature net only.

Options and flags which can be used to configure how a FIFO file is opened.

This builder allows configuring how to create a pipe end from a FIFO file. Generally speaking, when using OpenOptions, you’ll first call new, then chain calls to methods to set each option, then call either open_receiver or open_sender, passing the path of the FIFO file you are trying to open. This will give you a io::Result with a pipe end inside that you can further operate on.

Examples

Opening a pair of pipe ends from a FIFO file:

use tokio::net::unix::pipe;

const FIFO_NAME: &str = "path/to/a/fifo";

let rx = pipe::OpenOptions::new().open_receiver(FIFO_NAME)?;
let tx = pipe::OpenOptions::new().open_sender(FIFO_NAME)?;

Opening a Sender on Linux when you are sure the file is a FIFO:

ⓘ
use tokio::net::unix::pipe;
use nix::{unistd::mkfifo, sys::stat::Mode};

// Our program has exclusive access to this path.
const FIFO_NAME: &str = "path/to/a/new/fifo";

mkfifo(FIFO_NAME, Mode::S_IRWXU)?;
let tx = pipe::OpenOptions::new()
    .read_write(true)
    .unchecked(true)
    .open_sender(FIFO_NAME)?;

Implementations

impl OpenOptions

pub fn new() -> OpenOptions

Creates a blank new set of options ready for configuration.

All options are initially set to false.

pub fn read_write(&mut self, value: bool) -> &mut Self

Available on Android or Linux only.

Sets the option for read-write access.

This option, when true, will indicate that a FIFO file will be opened in read-write access mode. This operation is not defined by the POSIX standard and is only guaranteed to work on Linux.

Examples

Opening a Sender even if there are no open reading ends:

ⓘ
use tokio::net::unix::pipe;

let tx = pipe::OpenOptions::new()
    .read_write(true)
    .open_sender("path/to/a/fifo");

Opening a resilient Receiver i.e. a reading pipe end which will not fail with UnexpectedEof during reading if all writing ends of the pipe close the FIFO file.

ⓘ
use tokio::net::unix::pipe;

let tx = pipe::OpenOptions::new()
    .read_write(true)
    .open_receiver("path/to/a/fifo");

pub fn unchecked(&mut self, value: bool) -> &mut Self

Sets the option to skip the check for FIFO file type.

By default, open_receiver and open_sender functions will check if the opened file is a FIFO file. Set this option to true if you are sure the file is a FIFO file.

Examples
use tokio::net::unix::pipe;
use nix::{unistd::mkfifo, sys::stat::Mode};

// Our program has exclusive access to this path.
const FIFO_NAME: &str = "path/to/a/new/fifo";

mkfifo(FIFO_NAME, Mode::S_IRWXU)?;
let rx = pipe::OpenOptions::new()
    .unchecked(true)
    .open_receiver(FIFO_NAME)?;

pub fn open_receiver<P: AsRef<Path>>(&self, path: P) -> Result<Receiver>

Creates a Receiver from a FIFO file with the options specified by self.

This function will open the FIFO file at the specified path, possibly check if it is a pipe, and associate the pipe with the default event loop for reading.

Errors

If the file type check fails, this function will fail with io::ErrorKind::InvalidInput. This function may also fail with other standard OS errors.

Panics

This function panics if it is not called from within a runtime with IO enabled.

The runtime is usually set implicitly when this function is called from a future driven by a tokio runtime, otherwise runtime can be set explicitly with Runtime::enter function.

pub fn open_sender<P: AsRef<Path>>(&self, path: P) -> Result<Sender>

Creates a Sender from a FIFO file with the options specified by self.

This function will open the FIFO file at the specified path, possibly check if it is a pipe, and associate the pipe with the default event loop for writing.

Errors

If the file type check fails, this function will fail with io::ErrorKind::InvalidInput. If the file is not opened in read-write access mode and the file is not currently open for reading, this function will fail with ENXIO. This function may also fail with other standard OS errors.

Panics

This function panics if it is not called from within a runtime with IO enabled.

The runtime is usually set implicitly when this function is called from a future driven by a tokio runtime, otherwise runtime can be set explicitly with Runtime::enter function.

Trait Implementations

impl Clone for OpenOptions

fn clone(&self) -> OpenOptions

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

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

Performs copy-assignment from source. Read more

impl Debug for OpenOptions

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

Formats the value using the given formatter. Read more

impl Default for OpenOptions

fn default() -> OpenOptions

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

Auto Trait Implementations

impl Freeze for OpenOptions

impl RefUnwindSafe for OpenOptions

impl Send for OpenOptions

impl Sync for OpenOptions

impl Unpin for OpenOptions

impl UnsafeUnpin for OpenOptions

impl UnwindSafe for OpenOptions

Blanket Implementations

impl<T> Any for T
where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T
where T: ?Sized,

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T
where T: ?Sized,

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more

impl<T> CloneToUninit for T
where T: Clone,

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

impl<T> From<T> for T

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> Instrument for T

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

impl<T, U> Into<U> for T
where U: From<T>,

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

impl<T> ToOwned for T
where T: Clone,

type Owned = T

The resulting type after obtaining ownership.

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T, U> TryFrom<U> for T
where U: Into<T>,

type Error = Infallible

The type returned in the event of a conversion error.

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.

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.

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

impl<T> WithSubscriber for T

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more

MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/net/unix/pipe/struct.OpenOptions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API