Struct libp2p::kad::KademliaConfig
source · [−]pub struct KademliaConfig { /* private fields */ }
Expand description
The configuration for the Kademlia
behaviour.
The configuration is consumed by Kademlia::new
.
Implementations
sourceimpl KademliaConfig
impl KademliaConfig
sourcepub fn set_protocol_name(
&mut self,
name: impl Into<Cow<'static, [u8]>>
) -> &mut KademliaConfig
pub fn set_protocol_name(
&mut self,
name: impl Into<Cow<'static, [u8]>>
) -> &mut KademliaConfig
Sets a custom protocol name.
Kademlia nodes only communicate with other nodes using the same protocol name. Using a custom name therefore allows to segregate the DHT from others, if that is desired.
sourcepub fn set_query_timeout(&mut self, timeout: Duration) -> &mut KademliaConfig
pub fn set_query_timeout(&mut self, timeout: Duration) -> &mut KademliaConfig
Sets the timeout for a single query.
Note: A single query usually comprises at least as many requests as the replication factor, i.e. this is not a request timeout.
The default is 60 seconds.
sourcepub fn set_replication_factor(
&mut self,
replication_factor: NonZeroUsize
) -> &mut KademliaConfig
pub fn set_replication_factor(
&mut self,
replication_factor: NonZeroUsize
) -> &mut KademliaConfig
Sets the replication factor to use.
The replication factor determines to how many closest peers
a record is replicated. The default is K_VALUE
.
sourcepub fn set_parallelism(
&mut self,
parallelism: NonZeroUsize
) -> &mut KademliaConfig
pub fn set_parallelism(
&mut self,
parallelism: NonZeroUsize
) -> &mut KademliaConfig
Sets the allowed level of parallelism for iterative queries.
The α
parameter in the Kademlia paper. The maximum number of peers
that an iterative query is allowed to wait for in parallel while
iterating towards the closest nodes to a target. Defaults to
ALPHA_VALUE
.
This only controls the level of parallelism of an iterative query, not the level of parallelism of a query to a fixed set of peers.
When used with KademliaConfig::disjoint_query_paths
it equals
the amount of disjoint paths used.
sourcepub fn disjoint_query_paths(&mut self, enabled: bool) -> &mut KademliaConfig
pub fn disjoint_query_paths(&mut self, enabled: bool) -> &mut KademliaConfig
Require iterative queries to use disjoint paths for increased resiliency in the presence of potentially adversarial nodes.
When enabled the number of disjoint paths used equals the configured parallelism.
See the S/Kademlia paper for more information on the high level design as well as its security improvements.
sourcepub fn set_record_ttl(
&mut self,
record_ttl: Option<Duration>
) -> &mut KademliaConfig
pub fn set_record_ttl(
&mut self,
record_ttl: Option<Duration>
) -> &mut KademliaConfig
Sets the TTL for stored records.
The TTL should be significantly longer than the (re-)publication interval, to avoid premature expiration of records. The default is 36 hours.
None
means records never expire.
Does not apply to provider records.
sourcepub fn set_replication_interval(
&mut self,
interval: Option<Duration>
) -> &mut KademliaConfig
pub fn set_replication_interval(
&mut self,
interval: Option<Duration>
) -> &mut KademliaConfig
Sets the (re-)replication interval for stored records.
Periodic replication of stored records ensures that the records are always replicated to the available nodes closest to the key in the context of DHT topology changes (i.e. nodes joining and leaving), thus ensuring persistence until the record expires. Replication does not prolong the regular lifetime of a record (for otherwise it would live forever regardless of the configured TTL). The expiry of a record is only extended through re-publication.
This interval should be significantly shorter than the publication interval, to ensure persistence between re-publications. The default is 1 hour.
None
means that stored records are never re-replicated.
Does not apply to provider records.
sourcepub fn set_publication_interval(
&mut self,
interval: Option<Duration>
) -> &mut KademliaConfig
pub fn set_publication_interval(
&mut self,
interval: Option<Duration>
) -> &mut KademliaConfig
Sets the (re-)publication interval of stored records.
Records persist in the DHT until they expire. By default, published records are re-published in regular intervals for as long as the record exists in the local storage of the original publisher, thereby extending the records lifetime.
This interval should be significantly shorter than the record TTL, to ensure records do not expire prematurely. The default is 24 hours.
None
means that stored records are never automatically re-published.
Does not apply to provider records.
sourcepub fn set_provider_record_ttl(
&mut self,
ttl: Option<Duration>
) -> &mut KademliaConfig
pub fn set_provider_record_ttl(
&mut self,
ttl: Option<Duration>
) -> &mut KademliaConfig
Sets the TTL for provider records.
None
means that stored provider records never expire.
Must be significantly larger than the provider publication interval.
sourcepub fn set_provider_publication_interval(
&mut self,
interval: Option<Duration>
) -> &mut KademliaConfig
pub fn set_provider_publication_interval(
&mut self,
interval: Option<Duration>
) -> &mut KademliaConfig
Sets the interval at which provider records for keys provided by the local node are re-published.
None
means that stored provider records are never automatically
re-published.
Must be significantly less than the provider record TTL.
sourcepub fn set_connection_idle_timeout(
&mut self,
duration: Duration
) -> &mut KademliaConfig
pub fn set_connection_idle_timeout(
&mut self,
duration: Duration
) -> &mut KademliaConfig
Sets the amount of time to keep connections alive when they’re idle.
sourcepub fn set_max_packet_size(&mut self, size: usize) -> &mut KademliaConfig
pub fn set_max_packet_size(&mut self, size: usize) -> &mut KademliaConfig
Modifies the maximum allowed size of individual Kademlia packets.
It might be necessary to increase this value if trying to put large records.
sourcepub fn set_kbucket_inserts(
&mut self,
inserts: KademliaBucketInserts
) -> &mut KademliaConfig
pub fn set_kbucket_inserts(
&mut self,
inserts: KademliaBucketInserts
) -> &mut KademliaConfig
Sets the k-bucket insertion strategy for the Kademlia routing table.
Trait Implementations
sourceimpl Clone for KademliaConfig
impl Clone for KademliaConfig
sourcepub fn clone(&self) -> KademliaConfig
pub fn clone(&self) -> KademliaConfig
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for KademliaConfig
impl Debug for KademliaConfig
sourceimpl Default for KademliaConfig
impl Default for KademliaConfig
sourcepub fn default() -> KademliaConfig
pub fn default() -> KademliaConfig
Returns the “default value” for a type. Read more
Auto Trait Implementations
impl RefUnwindSafe for KademliaConfig
impl Send for KademliaConfig
impl Sync for KademliaConfig
impl Unpin for KademliaConfig
impl UnwindSafe for KademliaConfig
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more