mirror of
https://github.com/ipfs/kubo.git
synced 2025-07-01 02:30:39 +08:00
Improve readability of getClosestPeers method.
Also remove older useless code.
This commit is contained in:
@ -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) {
|
|||||||
// 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
|
|||||||
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)
|
|||||||
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
|
||||||
|
Reference in New Issue
Block a user