#![cfg(feature = "pubsub")]
use remdb::pubsub::{self, PubSubConfig, WILDCARD_TOPIC_ID};
use std::thread::sleep;
use std::time::Duration;
fn print_callback(topic_id: u16, data: &[u8]) -> bool {
println!("Callback received: topic_id={}, data={:?}", topic_id, data);
true }
fn main() {
let config = PubSubConfig {
udp_mode: remdb::pubsub::UdpMode::Broadcast, port: 5555,
max_topics: 32,
max_subscribers_per_topic: 16,
..Default::default() };
pubsub::init(config).unwrap();
pubsub::register_topic("table1", 14).unwrap();
pubsub::register_topic("table2", 15).unwrap();
pubsub::register_topic("table3", 16).unwrap();
let sub1 = pubsub::subscribe(14, print_callback).unwrap();
println!("Subscribed to table1 with ID {}", sub1);
let sub2 = pubsub::subscribe(15, print_callback).unwrap();
println!("Subscribed to table2 with ID {}", sub2);
let sub_wildcard = pubsub::subscribe(WILDCARD_TOPIC_ID, print_callback).unwrap();
println!("Subscribed to all topics with ID {}", sub_wildcard);
sleep(Duration::from_millis(100));
println!("\nPublishing to table1...");
pubsub::publish(14, b"Hello from table1").unwrap();
sleep(Duration::from_millis(100));
println!("\nPublishing to table2...");
pubsub::publish(15, b"Hello from table2").unwrap();
sleep(Duration::from_millis(100));
println!("\nPublishing to table3...");
pubsub::publish(16, b"Hello from table3").unwrap();
sleep(Duration::from_millis(100));
pubsub::unsubscribe(sub1).unwrap();
pubsub::unsubscribe(sub2).unwrap();
pubsub::unsubscribe(sub_wildcard).unwrap();
pubsub::shutdown().unwrap();
println!("\nPubSub system shutdown");
}