mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-22 04:09:04 +08:00
coreapi: dht interface
License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
This commit is contained in:

committed by
Steven Allen

parent
82204d1de3
commit
a63e224e24
28
core/coreapi/interface/dht.go
Normal file
28
core/coreapi/interface/dht.go
Normal file
@ -0,0 +1,28 @@
|
||||
package iface
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
options "github.com/ipfs/go-ipfs/core/coreapi/interface/options"
|
||||
|
||||
ma "gx/ipfs/QmWWQ2Txc2c6tqjsBpzg5Ar652cHPGNsQQp2SejkNmkUMb/go-multiaddr"
|
||||
peer "gx/ipfs/QmZoWKhxUmZ2seW4BzX6fJkNR8hh9PsGModr7q171yq2SS/go-libp2p-peer"
|
||||
)
|
||||
|
||||
// DhtAPI specifies the interface to the DHT
|
||||
type DhtAPI interface {
|
||||
// FindPeer queries the DHT for all of the multiaddresses associated with a
|
||||
// Peer ID
|
||||
FindPeer(context.Context, peer.ID) (<-chan ma.Multiaddr, error)
|
||||
|
||||
// FindProviders finds peers in the DHT who can provide a specific value
|
||||
// given a key.
|
||||
FindProviders(context.Context, Path) (<-chan peer.ID, error) //TODO: is path the right choice here?
|
||||
|
||||
// Provide announces to the network that you are providing given values
|
||||
Provide(context.Context, Path, ...options.DhtProvideOption) error
|
||||
|
||||
// WithRecursive is an option for Provide which specifies whether to provide
|
||||
// the given path recursively
|
||||
WithRecursive(recursive bool) options.DhtProvideOption
|
||||
}
|
30
core/coreapi/interface/options/dht.go
Normal file
30
core/coreapi/interface/options/dht.go
Normal file
@ -0,0 +1,30 @@
|
||||
package options
|
||||
|
||||
type DhtProvideSettings struct {
|
||||
Recursive bool
|
||||
}
|
||||
|
||||
type DhtProvideOption func(*DhtProvideSettings) error
|
||||
|
||||
func DhtProvideOptions(opts ...DhtProvideOption) (*DhtProvideSettings, error) {
|
||||
options := &DhtProvideSettings{
|
||||
Recursive: false,
|
||||
}
|
||||
|
||||
for _, opt := range opts {
|
||||
err := opt(options)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return options, nil
|
||||
}
|
||||
|
||||
type DhtOptions struct{}
|
||||
|
||||
func (api *DhtOptions) WithRecursive(recursive bool) DhtProvideOption {
|
||||
return func(settings *DhtProvideSettings) error {
|
||||
settings.Recursive = recursive
|
||||
return nil
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user