Spec-Zone.ru › Tokio

Структура OwnedReadHalf

pub struct OwnedReadHalf { /* private fields */ }
Доступно только при включённой функции crate net.

Принадлежащая читающая половина TcpStream, создаваемая методом into_split.

Чтение из OwnedReadHalf обычно выполняется с помощью удобных методов трейта AsyncReadExt.

Реализации

impl OwnedReadHalf

pub fn reunite(self, other: OwnedWriteHalf) -> Result<TcpStream, ReuniteError>

Пытается соединить две половины TcpStream и восстановить исходный сокет. Успешно только в том случае, если обе половины были получены в результате одного и того же вызова into_split.

pub fn poll_peek( &mut self, cx: &mut Context<'_>, buf: &mut ReadBuf<'_>, ) -> Poll<Result<usize>>

Пытается получить данные из сокета, не удаляя их из очереди, и регистрирует текущую задачу для пробуждения, если данные ещё недоступны.

Обратите внимание: при нескольких вызовах poll_peek или poll_read для пробуждения планируется только Waker из Context, переданного в последнем вызове.

Дополнительные сведения см. в документации уровня TcpStream::poll_peek.

Примеры
use tokio::io::{self, ReadBuf};
use tokio::net::TcpStream;

use std::future::poll_fn;

#[tokio::main]
async fn main() -> io::Result<()> {
    let stream = TcpStream::connect("127.0.0.1:8000").await?;
    let (mut read_half, _) = stream.into_split();
    let mut buf = [0; 10];
    let mut buf = ReadBuf::new(&mut buf);

    poll_fn(|cx| {
        read_half.poll_peek(cx, &mut buf)
    }).await?;

    Ok(())
}

pub async fn peek(&mut self, buf: &mut [u8]) -> Result<usize>

Получает данные из сокета от удалённого адреса, с которым он соединён, не удаляя их из очереди. В случае успеха возвращает количество просмотренных байтов.

Дополнительные сведения см. в документации уровня TcpStream::peek.

Примеры
use tokio::net::TcpStream;
use tokio::io::AsyncReadExt;
use std::error::Error;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    // Connect to a peer
    let stream = TcpStream::connect("127.0.0.1:8080").await?;
    let (mut read_half, _) = stream.into_split();

    let mut b1 = [0; 10];
    let mut b2 = [0; 10];

    // Peek at the data
    let n = read_half.peek(&mut b1).await?;

    // Read the data
    assert_eq!(n, read_half.read(&mut b2[..n]).await?);
    assert_eq!(&b1[..n], &b2[..n]);

    Ok(())
}

Метод read определён в трейте AsyncReadExt.

pub async fn ready(&self, interest: Interest) -> Result<Ready>

Ожидает наступления любого из запрошенных состояний готовности.

Эта функция обычно используется вместе с try_read(). Вместо readable() её можно использовать для проверки возвращённого набора состояний готовности на наличие событий Ready::READABLE и Ready::READ_CLOSED.

Функция может завершиться, даже если сокет не готов. Это ложноположительный результат, и попытка выполнить операцию вернёт io::ErrorKind::WouldBlock. Функция также может вернуть пустой набор Ready, поэтому всегда следует проверять возвращённое значение и, возможно, ожидать снова, если запрошенные состояния не установлены.

Эта функция эквивалентна TcpStream::ready.

Безопасность при отмене

Этот метод безопасен при отмене. После наступления события готовности метод будет немедленно возвращать результат, пока это событие не будет обработано попыткой чтения или записи, завершившейся с ошибкой WouldBlock или Poll::Pending.

pub async fn readable(&self) -> Result<()>

Ожидает, пока сокет не станет доступен для чтения.

Эта функция эквивалентна ready(Interest::READABLE) и обычно используется вместе с try_read().

Эта функция также эквивалентна TcpStream::ready.

Безопасность при отмене

Этот метод безопасен при отмене. После наступления события готовности метод будет немедленно возвращать результат, пока это событие не будет обработано попыткой чтения, завершившейся с ошибкой WouldBlock или Poll::Pending.

pub fn try_read(&self, buf: &mut [u8]) -> Result<usize>

Пытается прочитать данные из потока в предоставленный буфер и возвращает количество прочитанных байтов.

Получает все ожидающие данные из сокета, но не ждёт поступления новых данных. В случае успеха возвращает количество прочитанных байтов. Поскольку try_read() работает в неблокирующем режиме, буфер не нужно хранить в асинхронной задаче: он может полностью находиться в стеке.

Обычно вместе с этой функцией используется readable() или ready().

Возвращаемое значение

Если данные успешно прочитаны, возвращается Ok(n), где n — количество прочитанных байтов. Если n равно 0, это может указывать на один из двух сценариев:

  1. Читающая половина потока закрыта и больше не будет выдавать данные.
  2. Длина указанного буфера равна 0 байтам.

Если поток не готов к чтению данных, возвращается Err(io::ErrorKind::WouldBlock).

pub fn try_read_vectored(&self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize>

Пытается прочитать данные из потока в предоставленные буферы и возвращает количество прочитанных байтов.

Данные копируются в буферы по порядку; последний заполняемый буфер может быть заполнен лишь частично. Этот метод эквивалентен однократному вызову try_read() с объединёнными буферами.

Получает все ожидающие данные из сокета, но не ждёт поступления новых данных. В случае успеха возвращает количество прочитанных байтов. Поскольку try_read_vectored() работает в неблокирующем режиме, буфер не нужно хранить в асинхронной задаче: он может полностью находиться в стеке.

Обычно вместе с этой функцией используется readable() или ready().

Возвращаемое значение

Если данные успешно прочитаны, возвращается Ok(n), где n — количество прочитанных байтов. Ok(0) означает, что читающая половина потока закрыта и больше не будет выдавать данные. Если поток не готов к чтению данных, возвращается Err(io::ErrorKind::WouldBlock).

pub fn try_read_buf<B: BufMut>(&self, buf: &mut B) -> Result<usize>

Доступно только при включённой функции crate io-util.

Пытается прочитать данные из потока в предоставленный буфер, сдвигая его внутренний курсор, и возвращает количество прочитанных байтов.

Получает все ожидающие данные из сокета, но не ждёт поступления новых данных. В случае успеха возвращает количество прочитанных байтов. Поскольку try_read_buf() работает в неблокирующем режиме, буфер не нужно хранить в асинхронной задаче: он может полностью находиться в стеке.

Обычно вместе с этой функцией используется readable() или ready().

Возвращаемое значение

Если данные успешно прочитаны, возвращается Ok(n), где n — количество прочитанных байтов. Ok(0) означает, что читающая половина потока закрыта и больше не будет выдавать данные. Если поток не готов к чтению данных, возвращается Err(io::ErrorKind::WouldBlock).

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

Возвращает удалённый адрес, к которому подключён этот поток.

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

Возвращает локальный адрес, к которому привязан этот поток.

Реализации трейтов

impl AsRef<TcpStream> for OwnedReadHalf

fn as_ref(&self) -> &TcpStream

Преобразует этот тип в общую ссылку на входной тип (обычно выводимый).

impl AsyncRead for OwnedReadHalf

fn poll_read( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut ReadBuf<'_>, ) -> Poll<Result<()>>

Пытается прочитать из AsyncRead в buf. Подробнее

impl Debug for OwnedReadHalf

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

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

Автоматические реализации трейтов

impl Freeze for OwnedReadHalf

impl RefUnwindSafe for OwnedReadHalf

impl Send for OwnedReadHalf

impl Sync for OwnedReadHalf

impl Unpin for OwnedReadHalf

impl UnsafeUnpin for OwnedReadHalf

impl UnwindSafe for OwnedReadHalf

Общие реализации

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

fn type_id(&self) -> TypeId

Получает TypeId для self. Подробнее

impl<R> AsyncReadExt for R
where R: AsyncRead + ?Sized,

fn chain<R>(self, next: R) -> Chain<Self, R>
where Self: Sized, R: AsyncRead,

Доступно только при включённой функции crate io-util.
Создаёт новый экземпляр AsyncRead, объединяющий этот поток с next. Подробнее

fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Извлекает из этого источника несколько байтов в указанный буфер и возвращает количество прочитанных байтов. Подробнее

fn read_buf<'a, B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B>
where Self: Unpin, B: BufMut + ?Sized,

Доступно только при включённой функции crate io-util.
Извлекает из этого источника несколько байтов в указанный буфер, перемещая внутренний указатель буфера. Подробнее

fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает точное количество байтов, необходимое для заполнения buf. Подробнее

fn read_u8(&mut self) -> ReadU8<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает из базового источника беззнаковое 8-битное целое число. Подробнее

fn read_i8(&mut self) -> ReadI8<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает из базового источника знаковое 8-битное целое число. Подробнее

fn read_u16(&mut self) -> ReadU16<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает из базового источника беззнаковое 16-битное целое число в порядке байтов от старшего к младшему. Подробнее

fn read_i16(&mut self) -> ReadI16<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает из базового источника знаковое 16-битное целое число в порядке байтов от старшего к младшему. Подробнее

fn read_u32(&mut self) -> ReadU32<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает беззнаковое 32-битное целое число в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_i32(&mut self) -> ReadI32<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает знаковое 32-битное целое число в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_u64(&mut self) -> ReadU64<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает беззнаковое 64-битное целое число в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_i64(&mut self) -> ReadI64<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает знаковое 64-битное целое число в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_u128(&mut self) -> ReadU128<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает беззнаковое 128-битное целое число в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_i128(&mut self) -> ReadI128<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает знаковое 128-битное целое число в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_f32(&mut self) -> ReadF32<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает 32-битное число с плавающей точкой в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_f64(&mut self) -> ReadF64<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает 64-битное число с плавающей точкой в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_u16_le(&mut self) -> ReadU16Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает беззнаковое 16-битное целое число в порядке от младшего байта к старшему из базового средства чтения. Подробнее

fn read_i16_le(&mut self) -> ReadI16Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает знаковое 16-битное целое число в порядке от младшего байта к старшему из базового средства чтения. Подробнее

fn read_u32_le(&mut self) -> ReadU32Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает беззнаковое 32-битное целое число в порядке байтов от младшего к старшему из базового источника. Подробнее

fn read_i32_le(&mut self) -> ReadI32Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает знаковое 32-битное целое число в порядке байтов от младшего к старшему из базового источника. Подробнее

fn read_u64_le(&mut self) -> ReadU64Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает беззнаковое 64-битное целое число в порядке байтов от младшего к старшему из базового источника. Подробнее

fn read_i64_le(&mut self) -> ReadI64Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает знаковое 64-битное целое число в порядке байтов от младшего к старшему из базового источника. Подробнее

fn read_u128_le(&mut self) -> ReadU128Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает беззнаковое 128-битное целое число в порядке байтов от младшего к старшему из базового источника. Подробнее

fn read_i128_le(&mut self) -> ReadI128Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает знаковое 128-битное целое число в порядке байтов от младшего к старшему из базового источника. Подробнее

fn read_f32_le(&mut self) -> ReadF32Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает число с плавающей точкой одинарной точности (32 бита) в порядке байтов от младшего к старшему из базового источника. Подробнее

fn read_f64_le(&mut self) -> ReadF64Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает число с плавающей точкой двойной точности (64 бита) в порядке байтов от младшего к старшему из базового источника. Подробнее

fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Читает все байты из этого источника до EOF и помещает их в buf. Подробнее

fn read_to_string<'a>( &'a mut self, dst: &'a mut String, ) -> ReadToString<'a, Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает все байты из этого источника до EOF, добавляя их к buf. Подробнее

fn take(self, limit: u64) -> Take<Self>
where Self: Sized,

Доступно только при включённой функции crate io-util.
Создаёт адаптер, который считывает из него не более limit байт. Подробнее

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/tcp/struct.OwnedReadHalf.html

Spec-Zone.ru

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