Spec-Zone.ru › Tokio

Структура UnixListener

pub struct UnixListener { /* private fields */ }
Доступно только в Unix и при наличии функциональности крейта net.

Unix-сокет, который может принимать подключения от других Unix-сокетов.

Вы можете принять новое подключение с помощью метода accept.

UnixListener можно преобразовать в Stream с помощью UnixListenerStream.

Ошибки

Обратите внимание, что принятие подключения может привести к различным ошибкам, и не все из них обязательно являются фатальными — например, открытие слишком большого количества файловых дескрипторов или закрытие соединения другой стороной во время ожидания в очереди на принятие. Они приведут к завершению потока, если их никак не обработать.

Примеры

use tokio::net::UnixListener;

#[tokio::main]
async fn main() {
    let listener = UnixListener::bind("/path/to/the/socket").unwrap();
    loop {
        match listener.accept().await {
            Ok((stream, _addr)) => {
                println!("new client!");
            }
            Err(e) => { /* connection failed */ }
        }
    }
}

Реализации

impl UnixListener

pub fn bind<P>(path: P) -> Result<UnixListener>
where P: AsRef<Path>,

Создаёт новый UnixListener, привязанный к указанному пути.

Паника

Эта функция паникует, если вызывается вне контекста среды выполнения с включённым вводом-выводом (IO).

Среда выполнения обычно задаётся неявно, когда эта функция вызывается из future, управляемого средой выполнения tokio, в противном случае среду выполнения можно задать явно с помощью функции Runtime::enter.

pub fn bind_addr(socket_addr: &SocketAddr) -> Result<UnixListener>

Создаёт новый UnixListener, привязанный к указанному адресу.

Паника

Эта функция паникует, если вызывается вне контекста среды выполнения с включённым вводом-выводом (IO).

Среда выполнения обычно задаётся неявно, когда эта функция вызывается из future, управляемого средой выполнения tokio, в противном случае среду выполнения можно задать явно с помощью функции Runtime::enter.

pub fn from_std(listener: UnixListener) -> Result<UnixListener>

Создаёт новый UnixListener из std::os::unix::net::UnixListener.

Эта функция предназначена для оборачивания UnixListener из стандартной библиотеки в эквивалент Tokio.

Примечания

Вызывающая сторона отвечает за то, чтобы слушатель находился в неблокирующем режиме. В противном случае все операции ввода-вывода со слушателем будут блокировать поток, что приведёт к неожиданному поведению. Неблокирующий режим можно установить с помощью set_nonblocking.

Передача слушателя в блокирующем режиме всегда ошибочна, и поведение в этом случае может измениться в будущем. Например, это может вызвать панику.

Примеры
use tokio::net::UnixListener;
use std::os::unix::net::UnixListener as StdUnixListener;

let std_listener = StdUnixListener::bind("/path/to/the/socket")?;
std_listener.set_nonblocking(true)?;
let listener = UnixListener::from_std(std_listener)?;
Паника

Эта функция паникует, если вызывается вне контекста среды выполнения с включённым вводом-выводом (IO).

Среда выполнения обычно задаётся неявно, когда эта функция вызывается из future, управляемого средой выполнения tokio, в противном случае среду выполнения можно задать явно с помощью функции Runtime::enter.

pub fn into_std(self) -> Result<UnixListener>

Преобразует tokio::net::UnixListener в std::os::unix::net::UnixListener.

Для возвращённого std::os::unix::net::UnixListener неблокирующий режим будет установлен в true. Используйте set_nonblocking для изменения режима блокировки при необходимости.

Примеры
let tokio_listener = tokio::net::UnixListener::bind("/path/to/the/socket")?;
let std_listener = tokio_listener.into_std()?;
std_listener.set_nonblocking(false)?;

pub fn local_addr(&self) -> Result<SocketAddr>

Возвращает локальный адрес сокета этого слушателя.

pub fn take_error(&self) -> Result<Option<Error>>

Возвращает значение параметра SO_ERROR.

pub async fn accept(&self) -> Result<(UnixStream, SocketAddr)>

Принимает новое входящее подключение к этому слушателю.

Безопасность отмены

Этот метод безопасен к отмене. Если метод используется в качестве ветки в tokio::select! и другая ветка завершается первой, гарантируется, что этим методом не было принято никаких новых подключений.

pub fn poll_accept( &self, cx: &mut Context<'_>, ) -> Poll<Result<(UnixStream, SocketAddr)>>

Опрашивает готовность принять новое входящее подключение к этому слушателю.

Если нет подключений для принятия, возвращается Poll::Pending, и текущая задача будет уведомлена вейкером. Обратите внимание, что при многократных вызовах poll_accept только Waker из Context, переданного в самый последний вызов, запланирован на получение пробуждения.

Реализации типажей

impl AsFd for UnixListener

fn as_fd(&self) -> BorrowedFd<'_>

Заимствует файловый дескриптор. Подробнее

impl AsRawFd for UnixListener

fn as_raw_fd(&self) -> RawFd

Извлекает исходный файловый дескриптор. Подробнее

impl Debug for UnixListener

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

Форматирует значение с помощью заданного форматировщика. Подробнее

impl TryFrom<UnixListener> for UnixListener

fn try_from(stream: UnixListener) -> Result<Self>

Потребляет stream, возвращая объект ввода-вывода tokio.

Это эквивалентно UnixListener::from_std(stream).

type Error = Error

Тип, возвращаемый в случае ошибки преобразования.

Реализации автоматических типажей (Auto Trait)

impl !Freeze for UnixListener

impl RefUnwindSafe for UnixListener

impl Send for UnixListener

impl Sync for UnixListener

impl Unpin for UnixListener

impl UnsafeUnpin for UnixListener

impl UnwindSafe for UnixListener

Универсальные реализации (Blanket Implementations)

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

fn type_id(&self) -> TypeId

Возвращает TypeId для self. Подробнее

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

fn borrow(&self) -> &T

Неизменяемо заимствует из принадлежащего значения. Подробнее

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

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

Изменяемо заимствует из принадлежащего значения. Подробнее

impl<T> From<T> for T

fn from(t: T) -> T

Возвращает аргумент без изменений.

impl<T> Instrument for T

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

Инструментирует этот тип с помощью предоставленного Span, возвращая обёртку Instrumented. Подробнее

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

Инструментирует этот тип с помощью текущего Span, возвращая обёртку Instrumented. Подробнее

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

fn into(self) -> U

Вызывает U::from(self).

То есть это преобразование делает то, что определено в реализации From<T> for U.

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

type Error = Infallible

Тип, возвращаемый в случае ошибки преобразования.

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

Выполняет преобразование.

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

type Error = <U as TryFrom<T>>::Error

Тип, возвращаемый в случае ошибки преобразования.

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

Выполняет преобразование.

impl<T> WithSubscriber for T

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

Прикрепляет предоставленный Subscriber к этому типу, возвращая обёртку WithDispatch. Подробнее

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

Прикрепляет текущий используемый по умолчанию Subscriber к этому типу, возвращая обёртку WithDispatch. Подробнее

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

Spec-Zone.ru

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