// Pathological subscriber // Subscribes to one random topic and prints received messages extern crate zmq_pw as zmq; extern crate rand; use std::env; use rand::distributions::{IndependentSample, Range}; fn main() { let context = zmq::Context::new(); let subscriber = context.socket(zmq::SUB).unwrap(); let args: Vec<_> = env::args().collect(); let address = if args.len() == 2 { args[1].as_str() } else { "tcp://localhost:5556" }; subscriber.connect(&address).expect("could not connect to publisher"); let mut rng = rand::thread_rng(); let topic_range = Range::new(0, 1000); let subscription = format!("{:03}", topic_range.ind_sample(&mut rng)).into_bytes(); subscriber.set_subscribe(&subscription).unwrap(); loop { let topic = subscriber.recv_msg(0).unwrap(); let data = subscriber.recv_msg(0).unwrap(); assert_eq!(&topic[..], &subscription[..]); println!("{}", std::str::from_utf8(&data).unwrap()); } }