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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#[macro_export]
macro_rules! tx {
    ( $x:expr, $y:expr) => {
        if $x.send($y).is_err() {
            error!("fail to send data!");
            bail!("fail to send data!")
        }
    };
    ($x:expr, $y:expr, $msg:expr) => {
        if $x.send($y).is_err() {
            error!($msg);
            bail!($msg)
        }
    };
}
#[macro_export]
macro_rules! tx_async {
    ( $x:expr, $y:expr) => {
        if $x.send($y).await.is_err() {
            error!("fail to send data!");
            bail!("fail to send data!")
        }
    };
    ($x:expr, $y:expr, $msg:expr) => {
        if $x.send($y).await.is_err() {
            error!($msg);
            bail!($msg)
        }
    };
}
#[macro_export]
macro_rules! rx {
    ( $x:expr) => {
        match $x.recv() {
            Ok(val) => val,
            Err(e) => {
                error!("{:?}", e);
                Err(e)?
            }
        }
    };
    ( $x:expr, $msg:expr) => {
        match $x.recv() {
            Ok(val) => val,
            Err(_) => {
                error!($msg);
                bail!($msg);
            }
        }
    };
}

#[macro_export]
macro_rules! rx_async {
    ( $x:expr) => {
        match $x.recv().await {
            Some(val) => val,
            None => {
                error!("receive none");
                bail!("receive none");
            }
        }
    };
    ( $x:expr, $msg:expr) => {
        match $x.recv().await {
            Some(val) => val,
            None => {
                error!($msg);
                bail!($msg);
            }
        }
    };
}