Crates.io | udp_polygon |
lib.rs | udp_polygon |
version | 0.2.2 |
source | src |
created_at | 2023-07-22 22:02:02.452519 |
updated_at | 2023-11-27 15:31:13.83182 |
description | A UDP datagram library for Rust |
homepage | |
repository | https://github.com/elasticrash/udp_polygon |
max_upload_size | |
id | 923451 |
size | 39,577 |
An opiniated UDP listener and publisher
From 0.1.1 to 0.2.0
Previously, versions below 0.1.1 were converting the received datagram bytes into a string. However, starting from version 0.2.0 and onwards, the receive event now delivers the bytes directly.
Additionally, the expected format for sending data now requires it to be encapsulated within a Vec
There are many options on configuring your UDP client and server
[[bind_addresses]]
ip = "127.0.0.1"
port = 5061
[destination_address]
ip = "127.0.0.1"
port = 5060
let config = Config::from_arguments(
vec![(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 5061)],
Some((IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 5060)),
);
export BIND_ADDRS=127.0.0.1
export BIND_PORT=5061
export DEST_ADDRS=127.0.0.1
export DEST_PORT=5060
let config = Config::from_env();
polygon.send("Hello World".as_bytes().to_vec());
let rx = polygon.receive();
loop {
let maybe = rx.try_recv();
if let Ok(data) = maybe {
println!("receiving... {data:?}");
}
}
Retransmits a message with specific delays
polygon.send_with_timer(
"Hello World".as_bytes().to_vec(),
Timers {
delays: vec![500, 600, 1000, 1500],
},
);
retransmissions can be paused at any given time, even mid sending a message, effectively cancelling a retransmission
let mut polygon = Polygon::configure(config);
let pause = Arc::clone(&polygon.pause_timer_send);
*pause.lock().unwrap() = true;
or
let mut polygon = Polygon::configure(config);
polygon.pause_timer_send()
polygon.resume_timer_send()
this will make the send_with_timer to behave like a normal send (only it would still require tokio)
send_receive_with_timer