pub async fn recv<R: AsyncReadExt + Unpin + Send>(
    stream: &mut R,
    cipher: AesCipher
) -> Result<(BytesMut, AesCipher), PacketError>
Available on crate features compression and encrypt only.
Expand description

Recv message in compress_encrypt tcp-handler protocol.

You may use some crate to read and write data, such as serde, postcard and variable-len-reader.

§Arguments

  • stream - The tcp stream or ReadHalf.

§Example

use anyhow::Result;
use bytes::Buf;
use tcp_handler::compress_encrypt::{recv, server_init, server_start};
use tokio::net::TcpListener;
use variable_len_reader::VariableReader;

#[tokio::main]
async fn main() -> Result<()> {
    let server = TcpListener::bind("localhost:25564").await?;
    let (mut server, _) = server.accept().await?;
    let s_init = server_init(&mut server, &"test", |v| v == "0").await;
    let mut cipher = server_start(&mut server, s_init).await?;

    let (reader, c) = recv(&mut server, cipher).await?;
    let mut reader = reader.reader(); cipher = c;
    let _message = reader.read_string()?;
    Ok(())
}