libp2p-hs-0.1.0.0: Haskell implementation of the libp2p networking stack
Safe HaskellNone
LanguageGHC2021

Network.LibP2P.DHT.DHT

Description

DHT node state, RPC handler, and record/provider stores.

The DHTNode is the top-level coordinator for Kademlia DHT operations. It owns the routing table, record store, provider store, and handles both inbound (as handler) and outbound (sendDHTRequest) RPC.

For testability, sendDHTRequest is a field of DHTNode, allowing mock injection in tests without real network connections.

Synopsis

Types

data DHTNode Source #

Top-level DHT node state.

data DHTMode Source #

Server or client mode.

Constructors

DHTServer 
DHTClient 

Instances

Instances details
Show DHTMode Source # 
Instance details

Defined in Network.LibP2P.DHT.DHT

Eq DHTMode Source # 
Instance details

Defined in Network.LibP2P.DHT.DHT

Methods

(==) :: DHTMode -> DHTMode -> Bool #

(/=) :: DHTMode -> DHTMode -> Bool #

data ProviderEntry Source #

A provider record for content routing.

Constructors

ProviderEntry 

Instances

Instances details
Show ProviderEntry Source # 
Instance details

Defined in Network.LibP2P.DHT.DHT

Eq ProviderEntry Source # 
Instance details

Defined in Network.LibP2P.DHT.DHT

data Validator Source #

Validator interface for record validation.

Construction

newDHTNode :: Switch -> DHTMode -> IO DHTNode Source #

Create a new DHT node.

Handler registration

registerDHTHandler :: DHTNode -> IO () Source #

Register the DHT handler on the Switch (server mode only).

Inbound RPC handler

handleDHTRequest :: DHTNode -> StreamIO -> PeerId -> IO () Source #

Handle an inbound DHT RPC request.

Store operations

storeRecord :: DHTNode -> DHTRecord -> IO () Source #

Store a record in the local datastore.

lookupRecord :: DHTNode -> ByteString -> IO (Maybe DHTRecord) Source #

Look up a record by key.

addProvider :: DHTNode -> ByteString -> ProviderEntry -> IO () Source #

Add a provider entry for a content key.

getProviders :: DHTNode -> ByteString -> IO [ProviderEntry] Source #

Get providers for a content key.

Constants

dhtProtocolId :: Text Source #

DHT protocol identifier for multistream-select.