libobs_wrapper\utils/
async_sync.rs

1#[cfg(not(feature="blocking"))]
2pub use tokio::sync::{Mutex, RwLock};
3
4#[cfg(feature="blocking")]
5pub use parking_lot::{Mutex, RwLock};
6
7#[macro_export]
8#[cfg(not(feature="blocking"))]
9macro_rules! oneshot_rx_recv {
10    ($rx:ident) => {
11        $rx.await
12    };
13}
14
15#[macro_export]
16#[cfg(not(feature="blocking"))]
17macro_rules! rx_recv {
18    ($rx:ident) => {
19        $rx.recv().await
20    };
21}
22
23#[macro_export]
24#[cfg(feature="blocking")]
25macro_rules! rx_recv {
26    ($rx:ident) => {
27        $rx.blocking_recv()
28    };
29}
30
31#[macro_export]
32#[cfg(feature="blocking")]
33macro_rules! oneshot_rx_recv {
34    ($rx:ident) => {
35        $rx.blocking_recv()
36    };
37}
38
39
40#[macro_export]
41#[cfg(not(feature="blocking"))]
42macro_rules! mutex_blocking_lock {
43    ($lock:ident) => {
44        $lock.blocking_lock()
45    };
46}
47
48#[macro_export]
49#[cfg(feature="blocking")]
50macro_rules! mutex_blocking_lock {
51    ($lock:ident) => {
52        $lock.lock()
53    };
54}
55
56#[macro_export]
57#[cfg(not(feature="blocking"))]
58macro_rules! rw_lock_blocking_read {
59    ($lock:expr) => {
60        $lock.blocking_read()
61    };
62}
63
64
65#[macro_export]
66#[cfg(feature="blocking")]
67macro_rules! rw_lock_blocking_read {
68    ($lock:expr) => {
69        $lock.read()
70    };
71}
72
73
74#[macro_export]
75#[cfg(not(feature="blocking"))]
76macro_rules! rw_lock_blocking_write {
77    ($lock:expr) => {
78        $lock.blocking_write()
79    };
80}
81
82
83#[macro_export]
84#[cfg(feature="blocking")]
85macro_rules! rw_lock_blocking_write {
86    ($lock:expr) => {
87        $lock.write()
88    };
89}