pub fn encode_datagrams(
frame: &PonkFrame,
data_format: DataFormat,
max_datagram_len: usize,
) -> Result<Vec<Vec<u8>>, PonkError>Examples found in repository?
examples/roundtrip.rs (line 35)
9fn main() {
10 let frame = PonkFrame {
11 sender_id: 1,
12 sender_name: "roundtrip-example".to_string(),
13 frame_number: 0,
14 paths: vec![PonkPath {
15 metadata: vec![PonkMetadata {
16 key: "PATHNUMB".to_string(),
17 value: 0.0,
18 }],
19 points: vec![
20 PonkPoint {
21 x: -0.5,
22 y: -0.5,
23 rgb: [255, 0, 0],
24 },
25 PonkPoint {
26 x: 0.5,
27 y: 0.5,
28 rgb: [0, 255, 0],
29 },
30 ],
31 }],
32 };
33
34 let datagrams =
35 encode_datagrams(&frame, DataFormat::XyF32RgbU8, 1200).expect("frame should encode");
36 println!("encoded into {} datagram(s)", datagrams.len());
37
38 let decoded = decode_datagram(&datagrams[0])
39 .expect("valid datagram")
40 .expect("single-chunk frame");
41
42 println!(
43 "decoded frame from '{}' with {} path(s), {} point(s)",
44 decoded.sender_name,
45 decoded.paths.len(),
46 decoded.paths[0].points.len(),
47 );
48 assert_eq!(decoded.paths[0].points, frame.paths[0].points);
49 println!("roundtrip ok");
50}More examples
examples/send_multicast.rs (line 47)
16fn main() -> std::io::Result<()> {
17 let socket = UdpSocket::bind((Ipv4Addr::UNSPECIFIED, 0))?;
18 socket.set_multicast_ttl_v4(1)?;
19 socket.set_multicast_loop_v4(true)?;
20
21 let target = SocketAddr::from((MULTICAST_ADDR, DEFAULT_PORT));
22
23 // A square drawn as one path.
24 let frame = PonkFrame {
25 sender_id: 0xC0FFEE,
26 sender_name: "send-multicast-example".to_string(),
27 frame_number: 0,
28 paths: vec![PonkPath {
29 metadata: vec![],
30 points: [
31 (-0.5, -0.5),
32 (0.5, -0.5),
33 (0.5, 0.5),
34 (-0.5, 0.5),
35 (-0.5, -0.5),
36 ]
37 .into_iter()
38 .map(|(x, y)| PonkPoint {
39 x,
40 y,
41 rgb: [0, 255, 255],
42 })
43 .collect(),
44 }],
45 };
46
47 let datagrams = encode_datagrams(&frame, DataFormat::XyF32RgbU8, MAX_DATAGRAM_LEN)
48 .expect("frame should encode");
49
50 for datagram in &datagrams {
51 socket.send_to(datagram, target)?;
52 }
53 println!(
54 "sent {} datagram(s) to {} (multicast group {:?})",
55 datagrams.len(),
56 target,
57 MULTICAST_ADDR,
58 );
59 Ok(())
60}