Struct UnixNode

Source
pub struct UnixNode { /* private fields */ }
Expand description

A node within a mesh that uses Unix sockets to communicate.

Each pairwise connection between two nodes in the mesh communicates via a pair of bidirectional sockets.

If one node needs to send data to another but does not have a connection, it sends a request to the leader node to establish a connection. The leader creates a new socket pair and sends one end to each of the nodes, which the two nodes can use to communicate.

Implementations§

Source§

impl UnixNode

Source

pub fn new(driver: impl SpawnDriver) -> Self

Creates a new Unix node mesh with this node as the leader.

Source

pub fn id(&self) -> NodeId

Gets the node ID. This is mostly useful for diagnostics.

Source

pub fn offer_leadership(&self) -> LeadershipOffer

Returns an offer to hand the leadership to another node in the mesh.

The offer should be sent over a channel and passed to accept_leadership in the receiving node.

Source

pub fn accept_leadership(&self, offer: LeadershipOffer)

Accepts a leadership offer, making this node the current leader.

Source

pub async fn invite(&self, port: Port) -> Result<Invitation>

Invites another process to join the mesh, with port bridged with the original port.

Source

pub async fn join( driver: impl SpawnDriver, invitation: Invitation, port: Port, ) -> Result<Self, JoinError>

Joins an existing mesh via an invitation, briding port with the initial port.

Source

pub async fn shutdown(self)

Shuts down the node, waiting for any sent messages to be sent to their destination.

After this call, any active ports will no longer be able to receive messages.

It is essential to call this before exiting a mesh process; until this returns, data loss could occur for other mesh nodes.

Auto Trait Implementations§

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.

§

impl<T> Instrument for T

§

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

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

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

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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