decode_message

Function decode_message 

Source
pub fn decode_message<'a>(bytes: &'a [u8]) -> Result<(Message<'a>, usize)>
Expand description

Decode a single OSC message from bytes, returning the message and number of bytes consumed.

Examples found in repository?
examples/recv_udp.rs (line 32)
22fn main() -> std::io::Result<()> {
23    let sock = UdpSocket::bind("0.0.0.0:9000")?;
24    println!("listening on 9000");
25    let mut buf = [0u8; 65536];
26    loop {
27        let (n, _src) = sock.recv_from(&mut buf)?;
28        let data = &buf[..n];
29        // very simple heuristic: leading byte '/' => message, '#' => bundle
30        match data.first().copied() {
31            Some(b'/') => {
32                let (msg, used) = decode_message(data).expect("decode message");
33                assert_eq!(used, data.len());
34                println!("msg {} args={}", msg.address, msg.args.len());
35            }
36            Some(b'#') => {
37                let (bundle, _used) = decode_bundle(data).expect("decode bundle");
38                let (total_messages, total_bundles) = count_items_in_bundle(&bundle);
39                println!(
40                    "bundle timetag={} direct_packets={} total_messages={} total_bundles={}",
41                    bundle.timetag,
42                    bundle.packets.len(),
43                    total_messages,
44                    total_bundles
45                );
46            }
47            _ => eprintln!("unknown packet"),
48        }
49    }
50}