Struct Node

Source
pub struct Node<M: DatabaseManager<C>, C: DatabaseCollection> { /* private fields */ }
Expand description

Structure representing a TAPLE node

A node must be instantiated using the [Taple::build] method, which requires a set of configuration parameters in order to be properly initialized.

Implementations§

Source§

impl<M: DatabaseManager<C> + 'static, C: DatabaseCollection + 'static> Node<M, C>

Source

pub fn build(settings: Settings, database: M) -> Result<(Self, Api), Error>

This method creates and initializes a TAPLE node.

§Possible results

If the process is successful, the method will return Ok(()). An error will be returned only if it has not been possible to generate the necessary data for the initialization of the components, mainly due to problems in the initial configuration.

§Panics

This method panics if it has not been possible to generate the network layer.

Source

pub async fn recv_notification(&mut self) -> Option<Notification>

Receive a single notification

All notifications must be consumed. If the notification buffer is full the node will be blocked until there is space in the buffer. Notifications can be consumed in different ways.

recv_notification allows to consume the notifications one by one and keep control of the execution flow.

Source

pub async fn handle_notifications<H>(self, handler: H)
where H: Fn(Notification),

Handle all notifications

All notifications must be consumed. If the notification buffer is full the node will be blocked until there is space in the buffer. Notifications can be consumed in different ways.

handle_notifications processes all notifications from the node. For this purpose, the function in charge of processing the notifications is passed as input. This function blocks the task where it is invoked until the shutdown signal is produced.

Source

pub async fn drop_notifications(self)

Drop all notifications

All notifications must be consumed. If the notification buffer is full the node will be blocked until there is space in the buffer. Notifications can be consumed in different ways.

drop_notifications discards all notifications from the node.

Source

pub fn bind_with_shutdown( &self, signal: impl Future<Output = ()> + Send + 'static, )

Bind the node with a shutdown signal.

When the signal completes, the server will start the graceful shutdown process. The node can be bind to multiple signals.

Source

pub async fn shutdown_gracefully(self)

Shutdown gracefully the node

This function triggers the shutdown signal and waits until the node is safely terminated. This function can only be used if Y or Z has not been used to process the notifications.

Trait Implementations§

Source§

impl<M: Debug + DatabaseManager<C>, C: Debug + DatabaseCollection> Debug for Node<M, C>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<M, C> Freeze for Node<M, C>

§

impl<M, C> RefUnwindSafe for Node<M, C>

§

impl<M, C> Send for Node<M, C>

§

impl<M, C> Sync for Node<M, C>

§

impl<M, C> Unpin for Node<M, C>
where M: Unpin, C: Unpin,

§

impl<M, C> UnwindSafe for Node<M, C>
where M: UnwindSafe, C: UnwindSafe,

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<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, 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> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T