broker_tokio::net::tcp

Struct ReadHalf

Source
pub struct ReadHalf<'a>(/* private fields */);
Available on crate feature tcp only.
Expand description

Read half of a TcpStream.

Implementations§

Source§

impl ReadHalf<'_>

Source

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

Attempt to receive data on the socket, without removing that data from the queue, registering the current task for wakeup if data is not yet available.

See the TcpStream::poll_peek level documenation for more details.

§Examples
use tokio::io;
use tokio::net::TcpStream;

use futures::future::poll_fn;

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

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

    Ok(())
}
Source

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

Receives data on the socket from the remote address to which it is connected, without removing that data from the queue. On success, returns the number of bytes peeked.

See the TcpStream::peek level documenation for more details.

§Examples
use tokio::net::TcpStream;
use tokio::prelude::*;
use std::error::Error;

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

Trait Implementations§

Source§

impl AsRef<TcpStream> for ReadHalf<'_>

Source§

fn as_ref(&self) -> &TcpStream

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsyncRead for ReadHalf<'_>

Source§

unsafe fn prepare_uninitialized_buffer(&self, _: &mut [MaybeUninit<u8>]) -> bool

Prepares an uninitialized buffer to be safe to pass to read. Returns true if the supplied buffer was zeroed out. Read more
Source§

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

Attempt to read from the AsyncRead into buf. Read more
Source§

fn poll_read_buf<B: BufMut>( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut B, ) -> Poll<Result<usize>>
where Self: Sized,

Pull some bytes from this source into the specified BufMut, returning how many bytes were read. Read more
Source§

impl<'a> Debug for ReadHalf<'a>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for ReadHalf<'a>

§

impl<'a> !RefUnwindSafe for ReadHalf<'a>

§

impl<'a> Send for ReadHalf<'a>

§

impl<'a> Sync for ReadHalf<'a>

§

impl<'a> Unpin for ReadHalf<'a>

§

impl<'a> !UnwindSafe for ReadHalf<'a>

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<R> AsyncReadExt for R
where R: AsyncRead + ?Sized,

Source§

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

Available on crate feature io-util only.
Create a new AsyncRead instance that chains this stream with next. Read more
Source§

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

Available on crate feature io-util only.
Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
Source§

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

Available on crate feature io-util only.
Pull some bytes from this source into the specified buffer, advancing the buffer’s internal cursor. Read more
Source§

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

Available on crate feature io-util only.
Read the exact number of bytes required to fill buf. Read more
Source§

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

Available on crate feature io-util only.
Reads an unsigned 8 bit integer from the underlying reader. Read more
Source§

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

Available on crate feature io-util only.
Reads a signed 8 bit integer from the underlying reader. Read more
Source§

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

Available on crate feature io-util only.
Reads an unsigned 16-bit integer in big-endian order from the underlying reader. Read more
Source§

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

Available on crate feature io-util only.
Reads a signed 16-bit integer in big-endian order from the underlying reader. Read more
Source§

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

Available on crate feature io-util only.
Reads an unsigned 32-bit integer in big-endian order from the underlying reader. Read more
Source§

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

Available on crate feature io-util only.
Reads a signed 32-bit integer in big-endian order from the underlying reader. Read more
Source§

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

Available on crate feature io-util only.
Reads an unsigned 64-bit integer in big-endian order from the underlying reader. Read more
Source§

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

Available on crate feature io-util only.
Reads an signed 64-bit integer in big-endian order from the underlying reader. Read more
Source§

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

Available on crate feature io-util only.
Reads an unsigned 128-bit integer in big-endian order from the underlying reader. Read more
Source§

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

Available on crate feature io-util only.
Reads an signed 128-bit integer in big-endian order from the underlying reader. Read more
Source§

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

Available on crate feature io-util only.
Read all bytes until EOF in this source, placing them into buf. Read more
Source§

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

Available on crate feature io-util only.
Read all bytes until EOF in this source, appending them to buf. Read more
Source§

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

Available on crate feature io-util only.
Creates an adaptor which reads at most limit bytes from it. 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>,

Source§

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

Source§

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.