kcp2k_rust/
lib.rs

1pub mod kcp2k;
2pub mod kcp2k_client;
3pub mod kcp2k_common;
4pub mod kcp2k_config;
5pub mod kcp2k_connection;
6pub mod kcp2k_server;
7
8pub use revel_cell;
9
10#[cfg(test)]
11mod tests {
12    use crate::kcp2k_client::Kcp2KClient;
13    use crate::kcp2k_common::{Callback, CallbackType, Kcp2KChannel};
14    use crate::kcp2k_config::Kcp2KConfig;
15    use crate::kcp2k_connection::Kcp2kConnection;
16    use crate::kcp2k_server::Kcp2KServer;
17    use std::time::{SystemTime, UNIX_EPOCH};
18
19    pub fn call_back(conn: &Kcp2kConnection, cb: Callback) {
20        println!("{}", cb);
21
22        let now = SystemTime::now();
23        let seconds_since_epoch = now.duration_since(UNIX_EPOCH).expect("Time went backwards").as_millis();
24        // 2. 将 u64 时间戳转换为小端字节序的字节数组
25        let time = seconds_since_epoch.to_le_bytes();
26
27        match cb.r#type {
28            CallbackType::OnConnected => {
29                let _ = conn.send_data(time.as_slice(), Kcp2KChannel::Unreliable);
30            }
31            CallbackType::OnData => {
32                let _ = conn.send_data(time.as_slice(), Kcp2KChannel::Reliable);
33            }
34            CallbackType::OnError => {}
35            CallbackType::OnDisconnected => {}
36        }
37    }
38
39    #[test]
40    pub fn test_server() {
41        env_logger::init();
42        let config = Kcp2KConfig::default();
43
44        let server = Kcp2KServer::new("0.0.0.0:3100".to_string(), config, call_back);
45
46        loop {
47            server.tick();
48        }
49    }
50
51    #[test]
52    pub fn test_client() {
53        env_logger::init();
54        let config = Kcp2KConfig::default();
55
56        let client = Kcp2KClient::new(config, call_back);
57
58        client.connect("127.0.0.1:3100".to_string());
59
60        loop {
61            client.tick();
62        }
63    }
64}