commonware-p2p 2026.4.0

Communicate with authenticated peers over encrypted connections.
Documentation
//! Peer

use crate::authenticated::lookup::metrics;
use commonware_codec::Error as CodecError;
use prometheus_client::metrics::{counter::Counter, family::Family};
use std::num::NonZeroUsize;
use thiserror::Error;

mod actor;
pub use actor::Actor;

mod ingress;
pub use ingress::Message;

pub struct Config {
    pub mailbox_size: usize,
    pub send_batch_size: NonZeroUsize,
    pub ping_frequency: std::time::Duration,
    pub sent_messages: Family<metrics::Message, Counter>,
    pub received_messages: Family<metrics::Message, Counter>,
    pub dropped_messages: Family<metrics::Message, Counter>,
    pub rate_limited: Family<metrics::Message, Counter>,
}

#[derive(Error, Debug)]
pub enum Error {
    #[error("peer killed: {0}")]
    PeerKilled(String),
    #[error("send failed: {0}")]
    SendFailed(commonware_stream::encrypted::Error),
    #[error("peer disconnected")]
    PeerDisconnected,
    #[error("receive failed: {0}")]
    ReceiveFailed(commonware_stream::encrypted::Error),
    #[error("decode failed: {0}")]
    DecodeFailed(CodecError),
    #[error("unexpected failure: {0}")]
    UnexpectedFailure(commonware_runtime::Error),
    #[error("invalid channel")]
    InvalidChannel,
}