pub async fn server_init<R: AsyncReadExt + Unpin + Send, P: FnOnce(&str) -> bool>(
    stream: &mut R,
    identifier: &str,
    version: P
) -> Result<(), StarterError>
Expand description

Init the server side in tcp-handler compress protocol.

Must be used in conjunction with tcp_handler::compress::server_start.

Arguments

  • stream - The tcp stream or ReadHalf.
  • identifier - The identifier of your application.
  • version - A prediction to determine whether the client version is allowed.

Example

use anyhow::Result;
use tcp_handler::compress::{server_init, server_start};
use tokio::net::TcpListener;

#[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;
    server_start(&mut server, s_init).await?;
    // Now the server is ready to use.
    Ok(())
}

You can get the client version from this function:

use anyhow::Result;
use tcp_handler::compress::{server_init, server_start};
use tokio::net::TcpListener;

#[tokio::main]
async fn main() -> Result<()> {
    let server = TcpListener::bind("localhost:25564").await?;
    let (mut server, _) = server.accept().await?;
    let mut version = None;
    let s_init = server_init(&mut server, &"test", |v| {
        version = Some(v.to_string());
        v == "0"
    }).await;
    server_start(&mut server, s_init).await?;
    let version = version.unwrap();
    // Now the version is got.
    let _ = version;
    Ok(())
}