mirror of
https://github.com/fluencelabs/go-libp2p-kad-dht
synced 2025-04-24 14:22:13 +00:00
Make the Routing Table's latency tolerance configurable.
This commit is contained in:
parent
2bceee5bb2
commit
fececcc819
6
dht.go
6
dht.go
@ -99,7 +99,7 @@ func New(ctx context.Context, h host.Host, options ...opts.Option) (*IpfsDHT, er
|
||||
if err := cfg.Apply(append([]opts.Option{opts.Defaults}, options...)...); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dht := makeDHT(ctx, h, cfg.Datastore, cfg.Protocols, cfg.BucketSize)
|
||||
dht := makeDHT(ctx, h, cfg.Datastore, cfg.Protocols, cfg.BucketSize, cfg.RoutingTable.LatencyTolerance)
|
||||
dht.autoRefresh = cfg.RoutingTable.AutoRefresh
|
||||
dht.rtRefreshPeriod = cfg.RoutingTable.RefreshPeriod
|
||||
dht.rtRefreshQueryTimeout = cfg.RoutingTable.RefreshQueryTimeout
|
||||
@ -152,9 +152,9 @@ func NewDHTClient(ctx context.Context, h host.Host, dstore ds.Batching) *IpfsDHT
|
||||
return dht
|
||||
}
|
||||
|
||||
func makeDHT(ctx context.Context, h host.Host, dstore ds.Batching, protocols []protocol.ID, bucketSize int) *IpfsDHT {
|
||||
func makeDHT(ctx context.Context, h host.Host, dstore ds.Batching, protocols []protocol.ID, bucketSize int, latency time.Duration) *IpfsDHT {
|
||||
self := kb.ConvertPeerID(h.ID())
|
||||
rt := kb.NewRoutingTable(bucketSize, self, time.Minute, h.Peerstore())
|
||||
rt := kb.NewRoutingTable(bucketSize, self, latency, h.Peerstore())
|
||||
cmgr := h.ConnManager()
|
||||
|
||||
rt.PeerAdded = func(p peer.ID) {
|
||||
|
@ -34,6 +34,7 @@ type Options struct {
|
||||
RefreshQueryTimeout time.Duration
|
||||
RefreshPeriod time.Duration
|
||||
AutoRefresh bool
|
||||
LatencyTolerance time.Duration
|
||||
}
|
||||
}
|
||||
|
||||
@ -69,6 +70,13 @@ var Defaults = func(o *Options) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func RoutingTableLatencyTolerance(latency time.Duration) Option {
|
||||
return func(o *Options) error {
|
||||
o.RoutingTable.LatencyTolerance = latency
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// RoutingTableRefreshQueryTimeout sets the timeout for routing table refresh
|
||||
// queries.
|
||||
func RoutingTableRefreshQueryTimeout(timeout time.Duration) Option {
|
||||
|
Loading…
x
Reference in New Issue
Block a user