Commit ec5d9c78 authored by Jeromy's avatar Jeromy

Improve readability of getClosestPeers method.

Also remove older useless code.
parent a55bf913
...@@ -40,7 +40,7 @@ func (dht *IpfsDHT) PutValue(ctx context.Context, key u.Key, value []byte) error ...@@ -40,7 +40,7 @@ func (dht *IpfsDHT) PutValue(ctx context.Context, key u.Key, value []byte) error
return err return err
} }
pchan, err := dht.getClosestPeers(ctx, key, KValue) pchan, err := dht.getClosestPeers(ctx, key)
if err != nil { if err != nil {
return err return err
} }
...@@ -116,11 +116,11 @@ func (dht *IpfsDHT) GetValue(ctx context.Context, key u.Key) ([]byte, error) { ...@@ -116,11 +116,11 @@ func (dht *IpfsDHT) GetValue(ctx context.Context, key u.Key) ([]byte, error) {
// Provide makes this node announce that it can provide a value for the given key // Provide makes this node announce that it can provide a value for the given key
func (dht *IpfsDHT) Provide(ctx context.Context, key u.Key) error { func (dht *IpfsDHT) Provide(ctx context.Context, key u.Key) error {
log.Event(ctx, "Provide Value start", &key) log.Event(ctx, "provideBegin", &key)
defer log.Event(ctx, "Provide Value end", &key) defer log.Event(ctx, "provideEnd", &key)
dht.providers.AddProvider(key, dht.self) dht.providers.AddProvider(key, dht.self)
peers, err := dht.getClosestPeers(ctx, key, KValue) peers, err := dht.getClosestPeers(ctx, key)
if err != nil { if err != nil {
return err return err
} }
...@@ -149,14 +149,16 @@ func (dht *IpfsDHT) FindProviders(ctx context.Context, key u.Key) ([]peer.PeerIn ...@@ -149,14 +149,16 @@ func (dht *IpfsDHT) FindProviders(ctx context.Context, key u.Key) ([]peer.PeerIn
return providers, nil return providers, nil
} }
func (dht *IpfsDHT) getClosestPeers(ctx context.Context, key u.Key, count int) (<-chan peer.ID, error) { // Kademlia 'node lookup' operation. Returns a channel of the K closest peers
// to the given key
func (dht *IpfsDHT) getClosestPeers(ctx context.Context, key u.Key) (<-chan peer.ID, error) {
tablepeers := dht.routingTable.NearestPeers(kb.ConvertKey(key), AlphaValue) tablepeers := dht.routingTable.NearestPeers(kb.ConvertKey(key), AlphaValue)
if len(tablepeers) == 0 { if len(tablepeers) == 0 {
return nil, kb.ErrLookupFailure return nil, kb.ErrLookupFailure
} }
out := make(chan peer.ID, count) out := make(chan peer.ID, KValue)
peerset := pset.NewLimited(count) peerset := pset.NewLimited(KValue)
for _, p := range tablepeers { for _, p := range tablepeers {
select { select {
...@@ -211,10 +213,6 @@ func (dht *IpfsDHT) closerPeersSingle(ctx context.Context, key u.Key, p peer.ID) ...@@ -211,10 +213,6 @@ func (dht *IpfsDHT) closerPeersSingle(ctx context.Context, key u.Key, p peer.ID)
for _, pbp := range pmes.GetCloserPeers() { for _, pbp := range pmes.GetCloserPeers() {
pid := peer.ID(pbp.GetId()) pid := peer.ID(pbp.GetId())
dht.peerstore.AddAddresses(pid, pbp.Addresses()) dht.peerstore.AddAddresses(pid, pbp.Addresses())
err := dht.ensureConnectedToPeer(ctx, pid)
if err != nil {
return nil, err
}
out = append(out, pid) out = append(out, pid)
} }
return out, nil return out, nil
......
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