1pub(crate) const LOCK_TIMEOUT: std::time::Duration = std::time::Duration::from_secs(5);
2
3#[macro_export]
4macro_rules! unwrap_or_return {
5 ($res: expr, $code: expr) => {
6 match $res {
7 Some(v) => v,
8 None => return $code,
9 }
10 };
11}
12
13#[macro_export]
14macro_rules! unwrap_or_return_with {
15 ($res: expr, $func:expr) => {
16 match $res {
17 Some(v) => v,
18 None => return $func(),
19 }
20 };
21}
22
23#[macro_export]
24macro_rules! unwrap_or_else {
25 ($res: expr, $else_block:block) => {
26 match $res {
27 Some(v) => v,
28 None => $else_block,
29 }
30 };
31}
32
33#[macro_export]
34macro_rules! ok_or_return_with {
35 ($res:expr, $func:expr) => {
36 match $res {
37 Ok(v) => v,
38 Err(e) => return $func(e),
39 }
40 };
41}
42
43#[macro_export]
44macro_rules! unwrap_or_noop {
45 ($res: expr) => {
46 match $res {
47 Some(v) => v,
48 None => return,
49 }
50 };
51}
52
53#[macro_export]
54macro_rules! read_lock_or_else {
55 ($lock:expr, $else_block:block) => {
56 match $lock.try_read_for($crate::macros::LOCK_TIMEOUT) {
57 Some(data) => data,
58 None => {
59 if cfg!(test) {
60 panic!("Failed to acquire read lock");
61 } else {
62 $else_block
63 }
64 }
65 }
66 };
67}
68
69#[macro_export]
70macro_rules! read_lock_or_return {
71 ($tag: expr, $lock:expr, $code: expr) => {
72 match $lock.try_read_for($crate::macros::LOCK_TIMEOUT) {
73 Some(data) => data,
74 None => {
75 if cfg!(test) {
76 panic!("Failed to acquire read lock");
77 } else {
78 $crate::log_e!($tag, "Failed to acquire read lock");
79 return $code;
80 }
81 }
82 }
83 };
84}
85
86#[macro_export]
87macro_rules! write_lock_or_else {
88 ($lock:expr, $else_block:block) => {
89 match $lock.try_write_for($crate::macros::LOCK_TIMEOUT) {
90 Some(data) => data,
91 None => {
92 if cfg!(test) {
93 panic!("Failed to acquire write lock");
94 } else {
95 $else_block
96 }
97 }
98 }
99 };
100}
101
102#[macro_export]
103macro_rules! write_lock_or_noop {
104 ($tag: expr, $lock:expr) => {
105 match $lock.try_write_for($crate::macros::LOCK_TIMEOUT) {
106 Some(data) => data,
107 None => {
108 if cfg!(test) {
109 panic!("Failed to acquire write lock");
110 } else {
111 $crate::log_e!($tag, "Failed to acquire write lock");
112 return;
113 }
114 }
115 }
116 };
117}
118
119#[macro_export]
120macro_rules! write_lock_or_return {
121 ($tag: expr, $lock:expr, $code: expr) => {
122 match $lock.try_write_for($crate::macros::LOCK_TIMEOUT) {
123 Some(data) => data,
124 None => {
125 if cfg!(test) {
126 panic!("Failed to acquire write lock");
127 } else {
128 $crate::log_e!($tag, "Failed to acquire write lock");
129 return $code;
130 }
131 }
132 }
133 };
134}
135
136#[macro_export]
137macro_rules! serialize_if_not_none {
138 ($state: expr, $field_name: expr, $value: expr) => {
139 if let Some(v) = $value {
140 $state.serialize_field($field_name, v)?
141 }
142 };
143}