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
#![deny(missing_docs)]

//! **pea2pea** is a P2P library designed with the following use cases in mind:
//! - simple and quick creation of custom P2P networks
//! - testing/verifying network protocols
//! - benchmarking and stress-testing P2P nodes (or other network entities)
//! - substituting other, "heavier" nodes in local network tests

mod config;
mod connection;
mod connections;
mod known_peers;
mod node;
mod node_stats;
mod protocols;
mod topology;

pub use config::NodeConfig;
pub use connection::{Connection, ConnectionReader, ConnectionSide};
pub use known_peers::{KnownPeers, PeerStats};
pub use node::Node;
pub use node_stats::NodeStats;
pub use protocols::{
    HandshakeHandler, HandshakeObjects, Handshaking, InboundHandler, Messaging, MessagingObjects,
};
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) -> &std::sync::Arc<Node>;
}