Struct tokio::net::tcp::ReadHalf[][src]

pub struct ReadHalf<'a>(_);
Expand description

Read half of a TcpStream.

Implementations

impl ReadHalf<'_>[src]

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

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(())
}

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

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

impl AsRef<TcpStream> for ReadHalf<'_>[src]

fn as_ref(&self) -> &TcpStream[src]

Performs the conversion.

impl AsyncRead for ReadHalf<'_>[src]

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

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

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

Attempts to read from the AsyncRead into buf. Read more

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

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

impl<'a> Debug for ReadHalf<'a>[src]

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

Formats the value using the given formatter. Read more

Auto Trait Implementations

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

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

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

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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

Performs the conversion.