ruknet 0.1.0

The perfect reimplementation of the RakNet protocol in Rust
Documentation
use ruknet::{app::RukMessageContext, Peer};

#[tokio::test]
async fn ping() {
    let ping_response = "ping response";

    let mut server = Peer::new("127.0.0.1:19132", ping_response).await.unwrap();
    let mut client = Peer::new("127.0.0.1:19134", "").await.unwrap();

    server.listen(10).await.unwrap();
    client.listen(1).await.unwrap();

    client.ping("127.0.0.1:19132").await.unwrap();

    let timeout_duration = tokio::time::Duration::from_secs(5);

    let result = tokio::time::timeout(timeout_duration, async {
        loop {
            tokio::time::sleep(tokio::time::Duration::from_millis(25)).await;

            if let Some(msg) = client.recv() {
                if let RukMessageContext::UnconnectedPong { ping_res, .. } = msg.context {
                    assert_eq!(ping_res, ping_response);
                    break;
                }
            }
        }
    });

    result.await.unwrap();
}