Methods
DHT methods in the Weave DHT — put, get, lookup, and the put/get state machine across the peer set.
Purpose
Peer discovery, mutable records, DID envelopes, local relay sessions, adapter registry, record stores, and handles.
This page follows the real source shape for Weave Dht and explains the workflow a developer is likely to use first.
Developer workflow
Start from the smallest constructor or builder, perform one meaningful operation, inspect the returned state, then add the relevant policy, storage, or network integration. The examples below should be expanded whenever the crate API changes.
Primary types to know
AdapterRegistry— network/weave-dht/src/methods.rsAnnouncementState— network/weave-dht/src/weave.rsAnnounceOpts— network/weave-dht/src/weave.rsDhtClient— network/weave-dht/src/lib.rsDhtConfig— network/weave-dht/src/lib.rsDhtHandle— network/weave-dht/src/lib.rsDhtMethodAdapter— network/weave-dht/src/methods.rsDhtNode— network/weave-dht/src/lib.rsDhtNodeBuilder— network/weave-dht/src/lib.rsDidEnvelope— network/weave-dht/src/envelope.rsEnhancedDhtNode— network/weave-dht/src/enhanced.rsMarsAdapter— network/weave-dht/src/methods.rs
Example shape
use weave_dht::{
AdapterRegistry, DhtMethodAdapter, DhtNode, MarsAdapter, MarsConfig, MethodAdapter,
};
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Start an in-memory DHT node and pull its DhtHandle. The handle is the
// surface every MethodAdapter wraps.
let node = DhtNode::builder()
.in_memory()
.listen_port(0)
.start()
.await?;
let handle = node.handle();
// AdapterRegistry indexes name->adapter so callers route by string.
let registry = AdapterRegistry::new();
let dht_adapter = DhtMethodAdapter::new(handle.clone(), Default::default());
let mars_adapter = MarsAdapter::new(dht_adapter.clone(), Some(MarsConfig::default()));
registry.register(Arc::new(dht_adapter));
registry.register(Arc::new(mars_adapter));
println!(
"dht_method={:?} mars_method={:?}",
registry.get("dht").map(|a| a.name().to_string()),
registry.get("mars").map(|a| a.name().to_string()),
);
Ok(())
}Stores
Stores in the Weave DHT. Peer discovery, mutable records, DID envelopes, local relay sessions, adapter registry, record stores, and handles.
API Surface
Public API surface for `weave-dht`: 23 structs, 1 enums, 2 traits, 66 functions. Every exported item with its source path under `network/weave-dht`.