use bytes::Bytes;
use kcp2k_rust::kcp2k::Kcp2K;
use kcp2k_rust::kcp2k_callback::{Callback, CallbackType};
use kcp2k_rust::kcp2k_channel::Kcp2KChannel;
use kcp2k_rust::kcp2k_config::Kcp2KConfig;
use kcp2k_rust::kcp2k_connection::Kcp2KConnection;
use std::process::exit;
use std::thread::sleep;
fn s_call_back(conn: &Kcp2KConnection, cb: Callback) {
match cb.r#type {
CallbackType::OnConnected => {
println!("S - OnConnected {}", cb.conn_id);
let _ = conn.send_data(Bytes::from(vec![1]), Kcp2KChannel::Reliable);
}
CallbackType::OnData => {
println!(
"S - received {:?} on channel {:?}",
cb.data.as_ref(),
cb.channel
);
let _ = conn.send_data(Bytes::from(vec![1]), Kcp2KChannel::Reliable);
}
CallbackType::OnDisconnected => {
println!("OnDisconnected {}", cb.conn_id);
}
CallbackType::OnError => {
println!("OnError {:?} {}", cb.conn_id, cb.error_message);
}
};
}
fn c_call_back(conn: &Kcp2KConnection, cb: Callback) {
match cb.r#type {
CallbackType::OnConnected => {
println!("C - OnConnected {}", cb.conn_id);
let _ = conn.send_data(Bytes::from(vec![0]), Kcp2KChannel::Reliable);
}
CallbackType::OnData => {
println!(
"C - received {:?} on channel {:?}",
cb.data.as_ref(),
cb.channel
);
let _ = conn.send_data(Bytes::from(vec![0]), Kcp2KChannel::Reliable);
}
CallbackType::OnDisconnected => {
println!("OnDisconnected {}", cb.conn_id);
exit(0);
}
CallbackType::OnError => {
println!("OnError {:?} {}", cb.conn_id, cb.error_message);
}
};
}
fn main() {
let config = Kcp2KConfig::default();
let server = Kcp2K::new_server(config, "0.0.0.0:3100".to_string(), s_call_back).unwrap();
let client = Kcp2K::new_client(config, "127.0.0.1:3100".to_string(), c_call_back).unwrap();
loop {
server.tick();
client.tick();
sleep(std::time::Duration::from_millis(10));
}
}