Skip to main content

NodeConfig

Struct NodeConfig 

Source
pub struct NodeConfig {
    pub bind_addr: Option<TransportAddr>,
    pub known_peers: Vec<TransportAddr>,
    pub keypair: Option<(MlDsaPublicKey, MlDsaSecretKey)>,
    pub transport_providers: Vec<Arc<dyn TransportProvider>>,
}
Expand description

Minimal configuration for P2P nodes

All fields are optional - the node will auto-configure everything.

  • bind_addr: Defaults to 0.0.0.0:0 (random port)
  • known_peers: Defaults to empty (node can still accept connections)
  • keypair: Defaults to fresh generated keypair
  • transport_providers: Defaults to UDP transport only

§Example

// Zero configuration
let config = NodeConfig::default();

// Or with known peers
let config = NodeConfig::builder()
    .known_peer("peer1.example.com:9000".parse()?)
    .build();

// Or with additional transport providers
#[cfg(feature = "ble")]
let config = NodeConfig::builder()
    .transport_provider(Arc::new(BleTransport::new().await?))
    .build();

Fields§

§bind_addr: Option<TransportAddr>

Bind address. Default: 0.0.0.0:0 (random port)

§known_peers: Vec<TransportAddr>

Known peers for initial discovery. Default: empty When empty, node can still accept incoming connections.

§keypair: Option<(MlDsaPublicKey, MlDsaSecretKey)>

Identity keypair (ML-DSA-65). Default: fresh generated Provide for persistent identity across restarts.

§transport_providers: Vec<Arc<dyn TransportProvider>>

Additional transport providers beyond the default UDP transport.

The UDP transport is always included by default. Use this to add additional transports like BLE, LoRa, serial, etc.

Transport capabilities are propagated to peer advertisements and used for routing decisions.

Implementations§

Source§

impl NodeConfig

Source

pub fn new() -> Self

Create a new config with defaults

Source

pub fn builder() -> NodeConfigBuilder

Create a builder for fluent construction

Source

pub fn with_bind_addr(addr: impl Into<TransportAddr>) -> Self

Create config with a specific bind address

Source

pub fn with_known_peers( peers: impl IntoIterator<Item = impl Into<TransportAddr>>, ) -> Self

Create config with known peers

Source

pub fn with_keypair( public_key: MlDsaPublicKey, secret_key: MlDsaSecretKey, ) -> Self

Create config with a specific ML-DSA-65 keypair

Source§

impl NodeConfig

Source

pub fn build_transport_registry(&self) -> TransportRegistry

Build a transport registry from this configuration

Creates a registry containing all configured transport providers. If no providers are configured, returns an empty registry (UDP should be added by the caller based on bind_addr).

Source

pub fn has_constrained_transports(&self) -> bool

Check if this configuration has any non-UDP transport providers

Trait Implementations§

Source§

impl Clone for NodeConfig

Source§

fn clone(&self) -> NodeConfig

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NodeConfig

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for NodeConfig

Source§

fn default() -> NodeConfig

Returns the “default value” for a type. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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