pub mod store; use super::*; use crate::bounded::BoundedVec; use radicle::node::PROTOCOL_VERSION; pub use store::{AnnouncementId, Error, RelayStatus, Store}; pub fn node(config: &Config, timestamp: Timestamp) -> NodeAnnouncement { let features = config.features(); let alias = config.alias.clone(); let addresses: BoundedVec<_, ADDRESS_LIMIT> = config .external_addresses .clone() .try_into() .expect("external addresses are within the limit"); let agent = config.user_agent(); let version = PROTOCOL_VERSION; NodeAnnouncement { features, version, timestamp, alias, addresses, nonce: 0, agent, } } pub fn inventory( timestamp: Timestamp, inventory: impl IntoIterator, ) -> InventoryAnnouncement { let inventory = inventory.into_iter().collect::>(); if inventory.len() > INVENTORY_LIMIT { warn!( target: "service", "inventory announcement limit ({}) exceeded, other nodes will see only some of your projects", inventory.len() ); } InventoryAnnouncement { inventory: BoundedVec::truncate(inventory), timestamp, } }