//! Communicate with authenticated peers over encrypted connections. //! //! # Status //! //! `commonware-p2p` is **ALPHA** software and is not yet recommended for production use. Developers should //! expect breaking changes and occasional instability. #![doc( html_logo_url = "https://commonware.xyz/imgs/rustdoc_logo.svg", html_favicon_url = "https://commonware.xyz/favicon.ico" )] use bytes::Bytes; use commonware_cryptography::PublicKey; use std::{error::Error as StdError, fmt::Debug, future::Future}; pub mod authenticated; pub mod simulated; pub mod utils; /// Tuple representing a message received from a given public key. /// /// This message is guaranteed to adhere to the configuration of the channel and /// will already be decrypted and authenticated. pub type Message
= (P, Bytes);
/// Alias for identifying communication channels.
pub type Channel = u32;
/// Enum indicating the set of recipients to send a message to.
#[derive(Clone)]
pub enum Recipients ),
One(P),
}
/// Interface for sending messages to a set of recipients.
pub trait Sender: Clone + Debug + Send + 'static {
/// Error that can occur when sending a message.
type Error: Debug + StdError + Send + Sync;
/// Public key type used to identify recipients.
type PublicKey: PublicKey;
/// Send a message to a set of recipients.
fn send(
&mut self,
recipients: Recipients