Struct Node

Source
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: NodeConfig

The node configuration

§storage: Box<dyn DataStorage + Send>

Storage to be used

§broker_net: BrokerNetwork

Network broker

§network_io: BrokerRouter

Network IO broker

§timer: Timer

Timer broker

§crypto_storage: CryptoStorage

Storing 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

Source

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.

Source

pub async fn request_list(&mut self) -> Result<(), NodeError>

Requests a list of all connected nodes

Source

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.

Source

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.

Source

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.

Source

pub fn nodes_info_all(&self) -> Result<HashMap<NodeID, NodeInfo>, NodeError>

Returns a list of known nodes from the local storage

Source

pub async fn add_chat_message(&mut self, msg: String) -> Result<(), NodeError>

Adds a new chat message that will be broadcasted to the system.

Source

pub fn get_config( storage: Box<dyn DataStorage>, ) -> Result<NodeConfig, NodeError>

Static method Fetches the config

Source

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<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T