1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#![deny(missing_docs)]
#![deny(unsafe_code)]

//! **pea2pea** is a simple, low-level, and customizable implementation of a TCP P2P node.

mod config;
mod node;
mod stats;
mod topology;

pub mod connections;
pub mod protocols;

pub use config::Config;
pub use connections::{Connection, ConnectionInfo, ConnectionSide};
pub use node::Node;
pub use stats::Stats;
pub use topology::{connect_nodes, Topology};

/// A trait for objects containing a [`Node`]; it is required to implement protocols.
pub trait Pea2Pea {
    /// Returns a clonable reference to the node.
    fn node(&self) -> &Node;
}