Структура Owned Write Half
pub struct OwnedWriteHalf { /* private fields */ }
net.Владеющая записывающая половина TcpStream, созданная с помощью into_split.
Обратите внимание, что в реализации AsyncWrite для этого типа вызов poll_shutdown завершит работу TCP-потока в направлении записи. Уничтожение записывающей половины также завершит работу записывающей половины TCP-потока.
Запись в OwnedWriteHalf обычно выполняется с помощью удобных методов, предоставляемых трейтoм AsyncWriteExt.
Реализации
impl OwnedWriteHalf
pub fn reunite(self, other: OwnedReadHalf) -> Result<TcpStream, ReuniteError>
Пытается вновь объединить две половины TcpStream и восстановить исходный сокет. Успешно только в том случае, если обе половины были получены в результате одного и того же вызова into_split.
pub fn forget(self)
Уничтожает половину для записи, но не закрывает её до тех пор, пока не будет отброшена половина для чтения. Если половина для чтения уже отброшена, поток закрывается.
pub async fn ready(&self, interest: Interest) -> Result<Ready>
Ожидает наступления любого из запрошенных состояний готовности.
Эта функция обычно используется вместе с try_write(). Её можно использовать вместо writable(), чтобы проверить возвращённый набор состояний готовности на наличие событий Ready::WRITABLE и Ready::WRITE_CLOSED.
Функция может завершиться, даже если сокет не готов. Это ложное срабатывание, и попытка выполнить операцию завершится с io::ErrorKind::WouldBlock. Функция также может вернуть пустой набор Ready, поэтому всегда проверяйте возвращённое значение и, возможно, ожидайте снова, если запрошенные состояния не установлены.
Эта функция эквивалентна TcpStream::ready.
Безопасность отмены
Этот метод безопасен при отмене. После наступления события готовности метод будет немедленно возвращать управление до тех пор, пока событие готовности не будет обработано попыткой чтения или записи, завершившейся с WouldBlock или Poll::Pending.
pub async fn writable(&self) -> Result<()>
Ожидает, пока сокет не станет доступен для записи.
Эта функция эквивалентна ready(Interest::WRITABLE) и обычно используется вместе с try_write().
Безопасность отмены
Этот метод безопасен при отмене. После наступления события готовности метод будет немедленно возвращать управление до тех пор, пока событие готовности не будет обработано попыткой записи, завершившейся с WouldBlock или Poll::Pending.
pub fn try_write(&self, buf: &[u8]) -> Result<usize>
Пытается записать буфер в поток и возвращает количество записанных байтов.
Функция пытается записать всё содержимое buf, однако может быть записана лишь часть буфера.
Эта функция обычно используется вместе с writable().
Возвращаемое значение
Если данные успешно записаны, возвращается Ok(n), где n — количество записанных байтов. Если поток не готов к записи данных, возвращается Err(io::ErrorKind::WouldBlock).
pub fn try_write_vectored(&self, bufs: &[IoSlice<'_>]) -> Result<usize>
Пытается записать в поток несколько буферов и возвращает количество записанных байтов.
Данные записываются из каждого буфера по порядку; последний прочитанный буфер может быть обработан лишь частично. Этот метод эквивалентен одному вызову try_write() с объединёнными буферами.
Эта функция обычно используется вместе с writable().
Возвращаемое значение
Если данные успешно записаны, возвращается Ok(n), где n — количество записанных байтов. Если поток не готов к записи данных, возвращается Err(io::ErrorKind::WouldBlock).
pub fn peer_addr(&self) -> Result<SocketAddr>
Возвращает адрес удалённой стороны, к которой подключён этот поток.
pub fn local_addr(&self) -> Result<SocketAddr>
Возвращает локальный адрес, к которому привязан этот поток.
Реализации трейтов
impl AsRef<TcpStream> for OwnedWriteHalf
impl AsyncWrite for OwnedWriteHalf
fn poll_write( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize>>
buf в объект. Подробнее
fn poll_write_vectored( self: Pin<&mut Self>, cx: &mut Context<'_>, bufs: &[IoSlice<'_>], ) -> Poll<Result<usize>>
poll_write, но запись выполняется из среза буферов. Подробнее
fn is_write_vectored(&self) -> bool
poll_write_vectored. Подробнее
impl Debug for OwnedWriteHalf
impl Drop for OwnedWriteHalf
Реализации автоматических трейтов
impl Freeze for OwnedWriteHalf
impl RefUnwindSafe for OwnedWriteHalf
impl Send for OwnedWriteHalf
impl Sync for OwnedWriteHalf
impl Unpin for OwnedWriteHalf
impl UnsafeUnpin for OwnedWriteHalf
impl UnwindSafe for OwnedWriteHalf
Общие реализации
impl<W> AsyncWriteExt for Wwhere W: AsyncWrite + ?Sized,
fn write<'a>(&'a mut self, src: &'a [u8]) -> Write<'a, Self>where Self: Unpin,
io-util.fn write_vectored<'a, 'b>( &'a mut self, bufs: &'a [IoSlice<'b>], ) -> WriteVectored<'a, 'b, Self>where Self: Unpin,
io-util.fn write_buf<'a, B>(&'a mut self, src: &'a mut B) -> WriteBuf<'a, Self, B>
io-util.fn write_all_buf<'a, B>( &'a mut self, src: &'a mut B, ) -> WriteAllBuf<'a, Self, B>
io-util.fn write_all<'a>(&'a mut self, src: &'a [u8]) -> WriteAll<'a, Self>where Self: Unpin,
io-util.fn write_u16(&mut self, n: u16) -> WriteU16<&mut Self>where Self: Unpin,
io-util.fn write_i16(&mut self, n: i16) -> WriteI16<&mut Self>where Self: Unpin,
io-util.fn write_u32(&mut self, n: u32) -> WriteU32<&mut Self>where Self: Unpin,
io-util.fn write_i32(&mut self, n: i32) -> WriteI32<&mut Self>where Self: Unpin,
io-util.fn write_u64(&mut self, n: u64) -> WriteU64<&mut Self>where Self: Unpin,
io-util.fn write_i64(&mut self, n: i64) -> WriteI64<&mut Self>where Self: Unpin,
io-util.fn write_u128(&mut self, n: u128) -> WriteU128<&mut Self>where Self: Unpin,
io-util.fn write_i128(&mut self, n: i128) -> WriteI128<&mut Self>where Self: Unpin,
io-util.fn write_f32(&mut self, n: f32) -> WriteF32<&mut Self>where Self: Unpin,
io-util.fn write_f64(&mut self, n: f64) -> WriteF64<&mut Self>where Self: Unpin,
io-util.fn write_u16_le(&mut self, n: u16) -> WriteU16Le<&mut Self>where Self: Unpin,
io-util.fn write_i16_le(&mut self, n: i16) -> WriteI16Le<&mut Self>where Self: Unpin,
io-util.fn write_u32_le(&mut self, n: u32) -> WriteU32Le<&mut Self>where Self: Unpin,
io-util.fn write_i32_le(&mut self, n: i32) -> WriteI32Le<&mut Self>where Self: Unpin,
io-util.fn write_u64_le(&mut self, n: u64) -> WriteU64Le<&mut Self>where Self: Unpin,
io-util.fn write_i64_le(&mut self, n: i64) -> WriteI64Le<&mut Self>where Self: Unpin,
io-util.fn write_u128_le(&mut self, n: u128) -> WriteU128Le<&mut Self>where Self: Unpin,
io-util.fn write_i128_le(&mut self, n: i128) -> WriteI128Le<&mut Self>where Self: Unpin,
io-util.fn write_f32_le(&mut self, n: f32) -> WriteF32Le<&mut Self>where Self: Unpin,
io-util.fn write_f64_le(&mut self, n: f64) -> WriteF64Le<&mut Self>where Self: Unpin,
io-util.impl<T> BorrowMut<T> for Twhere T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> Instrument for T
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
impl<T> WithSubscriber for T
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
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.OwnedWriteHalf.html