libobs_wrapper\utils/
async_sync.rs1#[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}