@@ 13,8 13,8 @@ import (
"github.com/libp2p/go-libp2p-core/network"
"github.com/libp2p/go-libp2p-core/peer"
"github.com/libp2p/go-libp2p-core/protocol"
- discovery "github.com/libp2p/go-libp2p-discovery"
dht "github.com/libp2p/go-libp2p-kad-dht"
+ routing "github.com/libp2p/go-libp2p-routing"
"github.com/rivo/tview"
"github.com/whyrusleeping/go-logging"
)
@@ 22,7 22,6 @@ import (
var (
Logger = log.Logger("tallyard")
ProtocolID = protocol.ID("/tallyard/0.0.0")
- rendezvousString = "ohea7"
electionOptions []string
masterID peer.ID
@@ 100,23 99,23 @@ func bootstrap() {
ctx = context.Background()
h, err = libp2p.New(ctx,
- // libp2p.Routing(func(h host.Host) (routing.PeerRouting, error) {
- // var err error
- // kdht, err = dht.New(ctx, h)
- // return kdht, err
- // }),
+ libp2p.Routing(func(h host.Host) (routing.PeerRouting, error) {
+ var err error
+ kdht, err = dht.New(ctx, h)
+ if err != nil {
+ return kdht, err
+ }
+ Logger.Info("boostrapping the DHT")
+ if err = kdht.Bootstrap(ctx); err != nil {
+ panic(err)
+ }
+ return kdht, err
+ }),
)
if err != nil {
panic(err)
}
-
- kdht, err = dht.New(ctx, h)
- Logger.Info("boostrapping the DHT")
- if err = kdht.Bootstrap(ctx); err != nil {
- panic(err)
- }
-
Logger.Info("host:", h.ID())
Logger.Info(h.Addrs())
@@ 129,52 128,36 @@ func bootstrap() {
if err := h.Connect(ctx, *peerInfo); err != nil {
Logger.Warning(err)
} else {
- Logger.Info("connection established with bootstrap node: ", *peerInfo)
+ Logger.Info("connection established with bootstrap node:", *peerInfo)
}
}()
}
wg.Wait()
- Logger.Info("announcing ourselves...")
- routingDiscovery := discovery.NewRoutingDiscovery(kdht)
- discovery.Advertise(ctx, routingDiscovery, rendezvousString)
- Logger.Info("successfully announced!")
-
if masterID == "" { // we are the master
h.SetStreamHandler(ProtocolID, masterStreamHandler)
- } else { // we are a slave
- Logger.Info("searching for peers...")
- peerChan, err := routingDiscovery.FindPeers(ctx, rendezvousString)
+ } else { // we are a slave
+ Logger.Info("attempting to open stream with master peer...")
+ stream, err := h.NewStream(ctx, masterID, ProtocolID)
if err != nil {
panic(err)
}
- for p := range peerChan {
- Logger.Info("found peer:", p)
- if p.ID != masterID {
- continue
- }
- Logger.Info("attempting to open stream with peer...")
- stream, err := h.NewStream(ctx, masterID, ProtocolID)
- if err != nil {
+ Logger.Info("opened stream with master peer")
+ reader := bufio.NewReader(stream)
+ for {
+ str, err := reader.ReadString('\n')
+ if err == io.EOF {
+ break
+ } else if err != nil {
panic(err)
}
- Logger.Info("opened stream with master peer")
- reader := bufio.NewReader(stream)
- for {
- str, err := reader.ReadString('\n')
- if err == io.EOF {
- break
- } else if err != nil {
- panic(err)
- }
- if str[len(str)-1] == '\n' {
- str = str[:len(str)-1]
- }
- fmt.Println(str)
+ if str[len(str)-1] == '\n' {
+ str = str[:len(str)-1]
}
- stream.Close()
- Logger.Info("stream with master peer closed")
+ fmt.Println(str)
}
+ stream.Close()
+ Logger.Info("stream with master peer closed")
}
}