pub mod bootstrap;
pub(crate) mod events;
pub mod listener;
pub mod message;
pub mod peer;
pub mod peer_manager;
pub mod peer_store;
pub mod relay;
pub mod transport;
pub use bootstrap::connect_to_bootstrap_nodes;
pub use listener::start_listener;
pub use message::{Message, MessageType};
pub use peer::Peer;
pub use peer_manager::PeerManager;
pub use peer_store::{PeerSource, PeerStore};
pub use transport::connect_to_peer;
pub(crate) fn advertised_capabilities(config: &crate::config::Config) -> Option<Vec<String>> {
let mut caps = Vec::new();
if let Some(relay) = config.network.as_ref().and_then(|n| n.relay.as_ref()) {
if relay.enabled.unwrap_or(false) {
caps.push("relay".to_string());
if relay.store_forward.unwrap_or(false) {
caps.push("relay_store_forward".to_string());
}
}
}
if caps.is_empty() {
None
} else {
Some(caps)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum QoS {
LowLatency,
HighThroughput,
Bulk,
}
pub struct Network {
pub peers: Vec<String>, }
impl Default for Network {
fn default() -> Self {
Self::new()
}
}
impl Network {
pub fn new() -> Self {
Self { peers: vec![] }
}
pub fn add_peer(&mut self, peer: String) {
self.peers.push(peer);
}
}