Struct taple_core::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> !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 C: Unpin, M: Unpin,

§

impl<M, C> !UnwindSafe for Node<M, C>

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

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

§

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 Twhere U: TryFrom<T>,

§

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.
§

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

§

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