Move ConnMgr construction into DI provider
License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
Łukasz Magiera committed
Apr 1, 2019 at 21:13 UTC
5299299037f968c5e47a8278904b73ca8bb86c93
1 file changed
+23
-4
core/ncore.go
+23
-4
@@ -31,6 +31,7 @@ import (
31
"github.com/libp2p/go-libp2p"
32
"github.com/libp2p/go-libp2p-autonat-svc"
33
circuit "github.com/libp2p/go-libp2p-circuit"
34
+ connmgr "github.com/libp2p/go-libp2p-connmgr"
35
"github.com/libp2p/go-libp2p-kad-dht"
36
"github.com/libp2p/go-libp2p-metrics"
37
pstore "github.com/libp2p/go-libp2p-peerstore"
@@ -329,12 +330,30 @@ func p2pAddrsFactory(cfg *iconfig.Config) (opts libp2pOpts, err error) {
330
}
331
332
func p2pConnectionManager(cfg *iconfig.Config) (opts libp2pOpts, err error) {
332
- connm, err := constructConnMgr(cfg.Swarm.ConnMgr)
333
- if err != nil {
334
- return opts, err
333
+ grace := iconfig.DefaultConnMgrGracePeriod
334
+ low := iconfig.DefaultConnMgrHighWater
335
+ high := iconfig.DefaultConnMgrHighWater
336
+
337
+ switch cfg.Swarm.ConnMgr.Type {
338
+ case "":
339
+ // 'default' value is the basic connection manager
340
+ return
341
+ case "none":
342
+ return opts, nil
343
+ case "basic":
344
+ grace, err = time.ParseDuration(cfg.Swarm.ConnMgr.GracePeriod)
345
+ if err != nil {
346
+ return opts, fmt.Errorf("parsing Swarm.ConnMgr.GracePeriod: %s", err)
347
+ }
348
+
349
+ low = cfg.Swarm.ConnMgr.LowWater
350
+ high = cfg.Swarm.ConnMgr.HighWater
351
+ default:
352
+ return opts, fmt.Errorf("unrecognized ConnMgr.Type: %q", cfg.Swarm.ConnMgr.Type)
353
}
354
337
- opts.Opts = append(opts.Opts, libp2p.ConnectionManager(connm))
355
+ cm := connmgr.NewConnManager(low, high, grace)
356
+ opts.Opts = append(opts.Opts, libp2p.ConnectionManager(cm))
357
return
358
}
359