func (d *dht) Init() error { d.m = mesh.FromEndpoint(d.e) if d.m == nil { panic("kademlia requires the mesh module.") } d.e.AddHandler(d.prefix+"see", e3x.HandlerFunc(d.handle_see)) return nil }
func newTransport(e *e3x.Endpoint, m mesh.Mesh) *transport { t := &transport{ e: e, m: m, addressTable: map[hashname.H]*e3x.Addr{}, localVnodes: map[string]localRPC{}, } if addr, _ := e.LocalAddr(); addr != nil { t.registerAddr(addr) } e.AddHandler("chord.list", e3x.HandlerFunc(t.handleListVnodes)) e.AddHandler("chord.ping", e3x.HandlerFunc(t.handlePing)) e.AddHandler("chord.predecessor.get", e3x.HandlerFunc(t.handleGetPredecessor)) e.AddHandler("chord.notify", e3x.HandlerFunc(t.handleNotify)) e.AddHandler("chord.successors.find", e3x.HandlerFunc(t.handleFindSuccessors)) e.AddHandler("chord.predecessor.clear", e3x.HandlerFunc(t.handleClearPredecessor)) e.AddHandler("chord.successor.skip", e3x.HandlerFunc(t.handleSkipSuccessor)) return t }