6 releases (breaking)
0.8.0 | Apr 10, 2024 |
---|---|
0.7.0 | Oct 4, 2023 |
0.6.0 | Oct 4, 2023 |
0.5.0 | May 1, 2023 |
0.3.0 | Jan 18, 2023 |
#1629 in Network programming
49 downloads per month
Used in 3 crates
(2 directly)
190KB
4K
SLoC
netbeam
This is a pure-rust asynchronous network synchronization crate (using tokio) that recreates familiar asynchronous paradigms but in a network context.
Let A
and B
be two nodes with a pre-established ordered+reliable connection to each other (e.g., over TCP, TLS, QUIC, etc)
- join Given
A
executing functionf_a -> r_a
andB
executing functionf_b -> r_b
, returnr_a
toA
andr_b
toB
- try_join Given
A
executing functionf_a -> Result<r_a>
andB
executing functionf_b -> Result<r_b>
, returnResult<r_a>
toA
andResult<r_b>
toB
iffResult<r_a> = Ok(r_a)
ANDResult<r_b> = Ok(r_b)
. A global error is returned if either one of the nodes fails - select Given
A
executing functionf_a -> r_a
andB
executing functionf_b -> r_b
, returnr_a
toA
ifr_a
is computed first, or, returnr_b
toB
ifr_b
is computed first - try_select Given
A
executing functionf_a -> Result<r_a>
andB
executing functionf_b -> Result<r_b>
, returnResult<r_a>
toA
ifResult<r_a>
is computed first ANDResult<r_a> = Ok(r_a)
, or, returnResult<r_b>
toB
ifResult<r_b>
is computed first ANDResult<r_b> = Ok(r_b)
. Returns a global error if both nodes fail.
NetMutex: A mutual exclusion algorithm for sharing memory in a synchronized mannor between two nodes NetRwLock: Allows a single writer or many readers between two nodes
Additionally, there is a sync_start
file that allows the synchronization of two operations at approximately the same time.
Examples for every operation are in the source code under src/sync/[...]
Dependencies
~4–14MB
~159K SLoC