Skip to content

Commit ad27ebc

Browse files
feat: Expose the ProviderManager through the IpfsDht struct (#491)
* feat: Expose the ProviderManager through the IpfsDht struct * feat: expose providers prefix so that we do not have to hard code it in other places Co-authored-by: Aarsh Shah <[email protected]>
1 parent 6e748c2 commit ad27ebc

File tree

6 files changed

+19
-16
lines changed

6 files changed

+19
-16
lines changed

dht.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ type IpfsDHT struct {
4949
datastore ds.Datastore // Local data
5050

5151
routingTable *kb.RoutingTable // Array of routing tables for differently distanced nodes
52-
providers *providers.ProviderManager
52+
// ProviderManager stores & manages the provider records for this Dht peer.
53+
ProviderManager *providers.ProviderManager
5354

5455
birth time.Time // When this peer started up
5556

@@ -111,7 +112,7 @@ func New(ctx context.Context, h host.Host, options ...opts.Option) (*IpfsDHT, er
111112
// register for network notifs.
112113
dht.host.Network().Notify((*netNotifiee)(dht))
113114

114-
dht.proc.AddChild(dht.providers.Process())
115+
dht.proc.AddChild(dht.ProviderManager.Process())
115116
dht.Validator = cfg.Validator
116117

117118
if !cfg.Client {
@@ -185,7 +186,7 @@ func makeDHT(ctx context.Context, h host.Host, cfg *opts.Options) *IpfsDHT {
185186
// the DHT context should be done when the process is closed
186187
dht.ctx = goprocessctx.WithProcessClosing(ctxTags, dht.proc)
187188

188-
dht.providers = providers.NewProviderManager(dht.ctx, h.ID(), cfg.Datastore)
189+
dht.ProviderManager = providers.NewProviderManager(dht.ctx, h.ID(), cfg.Datastore)
189190

190191
return dht
191192
}

dht_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import (
3030
"github.com/ipfs/go-cid"
3131
u "github.com/ipfs/go-ipfs-util"
3232
kb "github.com/libp2p/go-libp2p-kbucket"
33-
"github.com/libp2p/go-libp2p-record"
33+
record "github.com/libp2p/go-libp2p-record"
3434
swarmt "github.com/libp2p/go-libp2p-swarm/testing"
3535
"github.com/libp2p/go-libp2p-testing/ci"
3636
travisci "github.com/libp2p/go-libp2p-testing/ci/travis"
@@ -677,7 +677,7 @@ func TestLocalProvides(t *testing.T) {
677677

678678
for _, c := range testCaseCids {
679679
for i := 0; i < 3; i++ {
680-
provs := dhts[i].providers.GetProviders(ctx, c.Hash())
680+
provs := dhts[i].ProviderManager.GetProviders(ctx, c.Hash())
681681
if len(provs) > 0 {
682682
t.Fatal("shouldnt know this")
683683
}
@@ -1418,7 +1418,7 @@ func TestClientModeConnect(t *testing.T) {
14181418

14191419
c := testCaseCids[0]
14201420
p := peer.ID("TestPeer")
1421-
a.providers.AddProvider(ctx, c.Hash(), p)
1421+
a.ProviderManager.AddProvider(ctx, c.Hash(), p)
14221422
time.Sleep(time.Millisecond * 5) // just in case...
14231423

14241424
provs, err := b.FindProviders(ctx, c)
@@ -1633,7 +1633,7 @@ func TestProvideDisabled(t *testing.T) {
16331633
if err != routing.ErrNotSupported {
16341634
t.Fatal("get should have failed on node B")
16351635
}
1636-
provs := dhtB.providers.GetProviders(ctx, kHash)
1636+
provs := dhtB.ProviderManager.GetProviders(ctx, kHash)
16371637
if len(provs) != 0 {
16381638
t.Fatal("node B should not have found local providers")
16391639
}
@@ -1649,7 +1649,7 @@ func TestProvideDisabled(t *testing.T) {
16491649
t.Fatal("node A should not have found providers")
16501650
}
16511651
}
1652-
provAddrs := dhtA.providers.GetProviders(ctx, kHash)
1652+
provAddrs := dhtA.ProviderManager.GetProviders(ctx, kHash)
16531653
if len(provAddrs) != 0 {
16541654
t.Fatal("node A should not have found local providers")
16551655
}

handlers.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ func (dht *IpfsDHT) handleGetProviders(ctx context.Context, p peer.ID, pmes *pb.
335335
}
336336

337337
// setup providers
338-
providers := dht.providers.GetProviders(ctx, key)
338+
providers := dht.ProviderManager.GetProviders(ctx, key)
339339
if has {
340340
providers = append(providers, dht.self)
341341
logger.Debugf("%s have the value. added self as provider", reqDesc)
@@ -393,7 +393,7 @@ func (dht *IpfsDHT) handleAddProvider(ctx context.Context, p peer.ID, pmes *pb.M
393393
// add the received addresses to our peerstore.
394394
dht.peerstore.AddAddrs(pi.ID, pi.Addrs, peerstore.ProviderAddrTTL)
395395
}
396-
dht.providers.AddProvider(ctx, key, p)
396+
dht.ProviderManager.AddProvider(ctx, key, p)
397397
}
398398

399399
return nil, nil

providers/providers.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,12 @@ func NewProviderManager(ctx context.Context, local peer.ID, dstore ds.Batching)
7373
return pm
7474
}
7575

76-
const providersKeyPrefix = "/providers/"
76+
// ProvidersKeyPrefix is the prefix/namespace for ALL provider record
77+
// keys stored in the data store.
78+
const ProvidersKeyPrefix = "/providers/"
7779

7880
func mkProvKey(k []byte) string {
79-
return providersKeyPrefix + base32.RawStdEncoding.EncodeToString(k)
81+
return ProvidersKeyPrefix + base32.RawStdEncoding.EncodeToString(k)
8082
}
8183

8284
func (pm *ProviderManager) Process() goprocess.Process {
@@ -283,7 +285,7 @@ func (pm *ProviderManager) run(proc goprocess.Process) {
283285

284286
// Now, kick off a GC of the datastore.
285287
q, err := pm.dstore.Query(dsq.Query{
286-
Prefix: providersKeyPrefix,
288+
Prefix: ProvidersKeyPrefix,
287289
})
288290
if err != nil {
289291
log.Error("provider record GC query failed: ", err)

providers/providers_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ func TestProvidesExpire(t *testing.T) {
186186
t.Fatal("providers map not cleaned up")
187187
}
188188

189-
res, err := ds.Query(dsq.Query{Prefix: providersKeyPrefix})
189+
res, err := ds.Query(dsq.Query{Prefix: ProvidersKeyPrefix})
190190
if err != nil {
191191
t.Fatal(err)
192192
}

routing.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ func (dht *IpfsDHT) Provide(ctx context.Context, key cid.Cid, brdcst bool) (err
426426
}()
427427

428428
// add self locally
429-
dht.providers.AddProvider(ctx, keyMH, dht.self)
429+
dht.ProviderManager.AddProvider(ctx, keyMH, dht.self)
430430
if !brdcst {
431431
return nil
432432
}
@@ -528,7 +528,7 @@ func (dht *IpfsDHT) findProvidersAsyncRoutine(ctx context.Context, key multihash
528528
defer close(peerOut)
529529

530530
ps := peer.NewLimitedSet(count)
531-
provs := dht.providers.GetProviders(ctx, key)
531+
provs := dht.ProviderManager.GetProviders(ctx, key)
532532
for _, p := range provs {
533533
// NOTE: Assuming that this list of peers is unique
534534
if ps.TryAdd(p) {

0 commit comments

Comments
 (0)