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
//! # aligne
//!
//! A crate to help synchronizing asynchronous request / responses.
//!
//! ## Example:
//! ```
//! #[tokio::main]
//! pub async fn main() {
//! let handle = aligne::ResponseManager::spawn();
//! let remote_a = handle.remote();
//! let remote_b = remote_a.clone();
//!
//! let _h1 = tokio::spawn(async move {
//! let msg = remote_b.request(2).await;
//! assert_eq!(msg, "message 2");
//! let msg = remote_b.request(1).await;
//! assert_eq!(msg, "message 1");
//! });
//!
//! let _h2 = tokio::spawn(async move {
//! remote_a.receive(1, "message 1").await;
//! remote_a.receive(2, "message 2").await;
//! });
//!
//! _h1.await.unwrap();
//! _h2.await.unwrap();
//! }
//! ```
pub use handle::ResponseManagerHandle;
pub use manager::ResponseManager;
pub use remote::ResponseManagerRemote;
mod handle;
mod manager;
mod message;
mod remote;