pub struct Node {Show 13 fields
pub node_config: NodeConfig,
pub storage: Box<dyn DataStorage + Send>,
pub broker_net: BrokerNetwork,
pub network_io: BrokerRouter,
pub timer: Timer,
pub crypto_storage: CryptoStorage,
pub stat: Option<Receiver<NetStats>>,
pub random: Option<RandomBroker>,
pub gossip: Option<Gossip>,
pub ping: Option<Ping>,
pub webproxy: Option<WebProxy>,
pub dht_router: Option<DHTRouter>,
pub dht_storage: Option<DHTStorage>,
}Expand description
The node structure holds it all together. It is the main structure of the project.
Fields§
§node_config: NodeConfigThe node configuration
storage: Box<dyn DataStorage + Send>Storage to be used
broker_net: BrokerNetworkNetwork broker
network_io: BrokerRouterNetwork IO broker
timer: TimerTimer broker
crypto_storage: CryptoStorageStoring all the signers and ACEs
stat: Option<Receiver<NetStats>>Stores the connection data
random: Option<RandomBroker>Handles a random number of connections
gossip: Option<Gossip>Gossip-events sent and received
ping: Option<Ping>Pings all connected nodes and informs about failing nodes
webproxy: Option<WebProxy>Answers GET requests from another node
dht_router: Option<DHTRouter>Sets up a dht routing system using Kademlia
dht_storage: Option<DHTStorage>Decentralized storage system using DHTRouting
Implementations§
Source§impl Node
impl Node
Sourcepub async fn start(
storage: Box<dyn DataStorage + Send>,
node_config: NodeConfig,
broker_net: BrokerNetwork,
) -> Result<Self, NodeError>
pub async fn start( storage: Box<dyn DataStorage + Send>, node_config: NodeConfig, broker_net: BrokerNetwork, ) -> Result<Self, NodeError>
Create new node by loading the config from the storage. This also initializes the network and starts listening for new messages from the signalling server and from other nodes. The actual logic is handled in Logic.
Sourcepub async fn request_list(&mut self) -> Result<(), NodeError>
pub async fn request_list(&mut self) -> Result<(), NodeError>
Requests a list of all connected nodes
Sourcepub fn nodes_info(&self, ids: Vec<NodeID>) -> Result<Vec<NodeInfo>, NodeError>
pub fn nodes_info(&self, ids: Vec<NodeID>) -> Result<Vec<NodeInfo>, NodeError>
Returns all NodeInfos that are stored locally. All ids that do not have a corresponding NodeInfo in the local storage are dropped.
Sourcepub fn nodes_connected(&self) -> Result<Vec<NodeInfo>, NodeError>
pub fn nodes_connected(&self) -> Result<Vec<NodeInfo>, NodeError>
Gets the current list of connected nodes - these are the nodes that this node is currently connected to, and can be shorter than the list of all nodes in the system.
Sourcepub fn nodes_online(&self) -> Result<Vec<NodeInfo>, NodeError>
pub fn nodes_online(&self) -> Result<Vec<NodeInfo>, NodeError>
Returns all currently online nodes in the whole system. Every node will only connect
to a subset of these nodes, which can be get with nodes_connected.
Sourcepub fn nodes_info_all(&self) -> Result<HashMap<NodeID, NodeInfo>, NodeError>
pub fn nodes_info_all(&self) -> Result<HashMap<NodeID, NodeInfo>, NodeError>
Returns a list of known nodes from the local storage
Sourcepub async fn add_chat_message(&mut self, msg: String) -> Result<(), NodeError>
pub async fn add_chat_message(&mut self, msg: String) -> Result<(), NodeError>
Adds a new chat message that will be broadcasted to the system.
Sourcepub fn get_config(
storage: Box<dyn DataStorage>,
) -> Result<NodeConfig, NodeError>
pub fn get_config( storage: Box<dyn DataStorage>, ) -> Result<NodeConfig, NodeError>
Static method Fetches the config
Sourcepub fn set_config(
storage: Box<dyn DataStorage>,
config: &str,
) -> Result<(), NodeError>
pub fn set_config( storage: Box<dyn DataStorage>, config: &str, ) -> Result<(), NodeError>
Updates the config of the node
Auto Trait Implementations§
impl Freeze for Node
impl !RefUnwindSafe for Node
impl Send for Node
impl !Sync for Node
impl Unpin for Node
impl !UnwindSafe for Node
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more