Commit acff6928 authored by Brian Tiger Chow's avatar Brian Tiger Chow

refactor(routing) expose Bootstrap() error on routing interface

parent d4c2e064
......@@ -4,6 +4,7 @@ package dht
import (
"crypto/rand"
"errors"
"fmt"
"sync"
"time"
......@@ -44,13 +45,18 @@ var DefaultBootstrapConfig = BootstrapConfig{
Timeout: time.Duration(20 * time.Second),
}
func (dht *IpfsDHT) Bootstrap(context.Context) error {
// Bootstrap satisfies the routing interface
return errors.New("TODO: perform DHT bootstrap")
}
// Bootstrap ensures the dht routing table remains healthy as peers come and go.
// it builds up a list of peers by requesting random peer IDs. The Bootstrap
// process will run a number of queries each time, and run every time signal fires.
// These parameters are configurable.
//
// Bootstrap returns a process, so the user can stop it.
func (dht *IpfsDHT) Bootstrap(config BootstrapConfig) (goprocess.Process, error) {
func (dht *IpfsDHT) BootstrapWithConfig(config BootstrapConfig) (goprocess.Process, error) {
sig := time.Tick(config.Period)
return dht.BootstrapOnSignal(config, sig)
}
......
......@@ -84,4 +84,8 @@ func (c *client) Ping(ctx context.Context, p peer.ID) (time.Duration, error) {
return 0, nil
}
func (c *client) Bootstrap(context.Context) error {
return nil
}
var _ routing.IpfsRouting = &client{}
......@@ -89,5 +89,9 @@ func (c *offlineRouting) Ping(ctx context.Context, p peer.ID) (time.Duration, er
return 0, ErrOffline
}
func (c *offlineRouting) Bootstrap(context.Context) (error) {
return nil
}
// ensure offlineRouting matches the IpfsRouting interface
var _ routing.IpfsRouting = &offlineRouting{}
......@@ -40,4 +40,10 @@ type IpfsRouting interface {
// Ping a peer, log the time it took
Ping(context.Context, peer.ID) (time.Duration, error)
// Bootstrap allows callers to hint to the routing system to get into a
// Boostrapped state
Bootstrap(context.Context) error
// TODO expose io.Closer or plain-old Close error
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment