HelloCore

Struct HelloCore 

Source
pub struct HelloCore {
    pub node_name: Name,
    pub hello_prefix: Name,
    pub claimed: Vec<Name>,
    pub nonce_counter: AtomicU32,
    pub config: Arc<RwLock<DiscoveryConfig>>,
    pub strategy: Mutex<Box<dyn NeighborProbeStrategy>>,
    pub served_prefixes: Mutex<Vec<Name>>,
    pub state: Mutex<HelloState>,
}
Expand description

Shared (non-link-specific) fields used by HelloProtocol<T>.

Exposed to LinkMedium implementations so they can access the node name, config, strategy, and mutable state when building packets or handling inbound messages.

The config field is held behind an Arc<RwLock<>> so that the management handler can update Tier 2 parameters (hello intervals, timeouts, fanouts) at runtime without restarting the protocol.

Fields§

§node_name: Name§hello_prefix: Name§claimed: Vec<Name>§nonce_counter: AtomicU32§config: Arc<RwLock<DiscoveryConfig>>

Live-mutable discovery configuration.

Clone the Arc via HelloCore::config_handle to share the same config instance with the management handler.

§strategy: Mutex<Box<dyn NeighborProbeStrategy>>§served_prefixes: Mutex<Vec<Name>>§state: Mutex<HelloState>

Implementations§

Source§

impl HelloCore

Source

pub fn new(node_name: Name, config: DiscoveryConfig) -> Self

Source

pub fn new_shared(node_name: Name, config: Arc<RwLock<DiscoveryConfig>>) -> Self

Create with a pre-existing shared config handle.

Use this when the management handler needs to mutate the same config instance that the protocol reads from.

Source

pub fn config_handle(&self) -> Arc<RwLock<DiscoveryConfig>>

Return a cloneable handle to the shared config for use by the management handler.

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.

§

impl<T> Pointable for T

§

const ALIGN: usize

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

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

§

fn vzip(self) -> V

§

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