Skip to main content

receiver/
receiver.rs

1// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
2// Copyright (c) 2025 Gavin Henry <ghenry@sentrypeer.org>
3
4use librecast::Librecast;
5
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7    // Create a new librecast context
8    let librecast = Librecast::new()?;
9
10    // Create a channel using the builder pattern
11    let channel = librecast
12        .channel_builder()
13        .name("example-channel")
14        .enable_raptorq()
15        .build()?;
16
17    // Join the channel
18    channel.join()?;
19
20    // Receive a message
21    let mut buffer = vec![0u8; 1024]; // Buffer to hold received data
22    match channel.receive(&mut buffer) {
23        Ok(size) => {
24            // Process the received data
25            let received_data = &buffer[..size];
26            println!(
27                "Received data: {:?}",
28                String::from_utf8_lossy(received_data)
29            );
30        }
31        Err(e) => {
32            eprintln!("Failed to receive data: {}", e);
33        }
34    }
35
36    // Leave the channel
37    channel.leave()?;
38
39    Ok(())
40}