1#![allow(unused_imports)]
2use std::thread;
3use std::time::Duration;
4
5use queen::{Socket, Node, Port, NonHook};
6use queen::net::NsonCodec;
7use queen::dict::*;
8use queen::nson::{MessageId, msg};
9use queen::error::Code;
10
11fn main() {
12 let socket = Socket::new(MessageId::new(), NonHook).unwrap();
13
14 let wire1 = socket.connect(MessageId::new(), false, msg!{}, None, None).unwrap();
16
17 wire1.send(msg!{
18 CHAN: PING
19 }).unwrap();
20
21 let ret = wire1.wait(Some(Duration::from_secs(1))).unwrap();
22 println!("wire 1 ping ret: {:?}", ret);
23
24 let wire2 = socket.connect(MessageId::new(), false, msg!{}, None, None).unwrap();
26
27 wire2.send(msg!{
28 CHAN: PING
29 }).unwrap();
30
31 let ret = wire2.wait(Some(Duration::from_secs(1))).unwrap();
32 println!("wire 2 ping ret: {:?}", ret);
33
34
35 wire1.send(msg!{
37 CHAN: ATTACH,
38 VALUE: "hello"
39 }).unwrap();
40
41 let ret = wire1.wait(Some(Duration::from_secs(1))).unwrap();
42 if let Some(err) = Code::get(&ret) {
43 if err != Code::Ok {
44 println!("wire 1 attach error: {:?}", err);
45 return
46 }
47 }
48
49 println!("wire 1 attach ret: {:?}", ret);
50
51 thread::spawn(move || {
52 loop {
53 if let Ok(ret) = wire1.wait(Some(Duration::from_secs(1))) {
54 if let Some(err) = Code::get(&ret) {
55 if err != Code::Ok {
56 println!("wire 1 recv error: {:?}", err);
57 return
58 }
59 }
60
61 println!("wire 1 recv ret: {:?}", ret);
62
63 if let Some(_) = ret.get("aaa") {
64 wire1.send(msg!{
65 CHAN: "hello",
66 CODE: 0i32,
67 TO: ret.get_message_id(FROM).unwrap(),
68 "lalala": "wawawa"
69 }).unwrap();
70 }
71 }
72 }
73 });
74
75
76 wire2.send(msg!{
78 ID: MessageId::new(),
79 CHAN: "hello",
80 "aaa": true,
81 "hello": "world"
82 }).unwrap();
83
84 let ret = wire2.wait(Some(Duration::from_secs(1))).unwrap();
85 if let Some(err) = Code::get(&ret) {
86 if err != Code::Ok {
87 println!("wire 2 send error: {:?}", err);
88 return
89 }
90 }
91
92 println!("wire 2 send ret: {:?}", ret);
93}