forked from zeromq/zmq.rs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstock_client.rs
35 lines (31 loc) · 935 Bytes
/
stock_client.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
mod async_helpers;
use std::convert::TryInto;
use std::env;
use std::error::Error;
use zeromq::{Socket, SocketRecv};
#[async_helpers::main]
async fn main() -> Result<(), Box<dyn Error>> {
let args: Vec<String> = env::args().collect();
let mut subscription = "";
if args.len() > 1 {
subscription = &args[1];
}
let mut socket = zeromq::SubSocket::new();
socket
.connect("tcp://127.0.0.1:5556")
.await
.expect("Failed to connect");
socket.subscribe(subscription).await?;
loop {
let recv = socket.recv().await?;
let stock: String = String::from_utf8(recv.get(0).unwrap().to_vec())?;
let price: u32 = u32::from_ne_bytes(
recv.get(1)
.unwrap()
.to_vec()
.try_into()
.expect("Couldn't deserialze u32 from data"),
);
println!("{}: {}", stock, price);
}
}