1use std::time::Duration;
2
3use queen::{Socket, Node, Port, NonHook};
4use queen::net::{NsonCodec, KeepAlive};
5use queen::dict::*;
6use queen::nson::{MessageId, msg};
7use queen::error::Code;
8
9fn main() {
10 let socket = Socket::new(MessageId::new(), NonHook).unwrap();
11
12 let wire1 = socket.connect(MessageId::new(), false, msg!{}, None, None).unwrap();
14
15 wire1.send(msg!{
16 CHAN: PING
17 }).unwrap();
18
19 let ret = wire1.wait(Some(Duration::from_secs(1))).unwrap();
20 println!("wire 1 ping ret: {:?}", ret);
21
22 let _node = Node::<NsonCodec>::new(
24 socket.clone(),
25 4,
26 vec!["127.0.0.1:8888".parse().unwrap()],
27 KeepAlive::default(),
28 ()
29 ).unwrap();
30
31 let port = Port::<NsonCodec>::new(KeepAlive::default()).unwrap();
33
34 let wire2 = port.connect("127.0.0.1:8888", MessageId::new(), false, msg!{}, None, None).unwrap();
36
37 wire2.send(msg!{
38 CHAN: PING
39 }).unwrap();
40
41 let ret = wire2.wait(Some(Duration::from_secs(1))).unwrap();
42 if let Some(err) = Code::get(&ret) {
43 if err != Code::Ok {
44 println!("wire 2 ping error: {:?}", err);
45 return
46 }
47 }
48
49 println!("wire 2 ping ret: {:?}", ret);
50
51 wire1.send(msg!{
53 CHAN: ATTACH,
54 VALUE: "hello"
55 }).unwrap();
56
57 let ret = wire1.wait(Some(Duration::from_secs(1))).unwrap();
58 println!("wire 1 attach ret: {:?}", ret);
59
60 wire2.send(msg!{
62 ID: MessageId::new(),
63 CHAN: "hello",
64 "hello": "world"
65 }).unwrap();
66
67 let ret = wire1.wait(Some(Duration::from_secs(1))).unwrap();
69 if let Some(err) = Code::get(&ret) {
70 if err != Code::Ok {
71 println!("wire 1 recv error: {:?}", err);
72 return
73 }
74 }
75
76 println!("wire 1 recv ret: {:?}", ret);
77}