From 5299299037f968c5e47a8278904b73ca8bb86c93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Mon, 1 Apr 2019 21:13:37 +0200 Subject: [PATCH] Move ConnMgr construction into DI provider MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit License: MIT Signed-off-by: Ɓukasz Magiera --- core/ncore.go | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/core/ncore.go b/core/ncore.go index dc27bebcf..bcdc1d0bb 100644 --- a/core/ncore.go +++ b/core/ncore.go @@ -31,6 +31,7 @@ import ( "github.com/libp2p/go-libp2p" "github.com/libp2p/go-libp2p-autonat-svc" circuit "github.com/libp2p/go-libp2p-circuit" + connmgr "github.com/libp2p/go-libp2p-connmgr" "github.com/libp2p/go-libp2p-kad-dht" "github.com/libp2p/go-libp2p-metrics" pstore "github.com/libp2p/go-libp2p-peerstore" @@ -329,12 +330,30 @@ func p2pAddrsFactory(cfg *iconfig.Config) (opts libp2pOpts, err error) { } func p2pConnectionManager(cfg *iconfig.Config) (opts libp2pOpts, err error) { - connm, err := constructConnMgr(cfg.Swarm.ConnMgr) - if err != nil { - return opts, err + grace := iconfig.DefaultConnMgrGracePeriod + low := iconfig.DefaultConnMgrHighWater + high := iconfig.DefaultConnMgrHighWater + + switch cfg.Swarm.ConnMgr.Type { + case "": + // 'default' value is the basic connection manager + return + case "none": + return opts, nil + case "basic": + grace, err = time.ParseDuration(cfg.Swarm.ConnMgr.GracePeriod) + if err != nil { + return opts, fmt.Errorf("parsing Swarm.ConnMgr.GracePeriod: %s", err) + } + + low = cfg.Swarm.ConnMgr.LowWater + high = cfg.Swarm.ConnMgr.HighWater + default: + return opts, fmt.Errorf("unrecognized ConnMgr.Type: %q", cfg.Swarm.ConnMgr.Type) } - opts.Opts = append(opts.Opts, libp2p.ConnectionManager(connm)) + cm := connmgr.NewConnManager(low, high, grace) + opts.Opts = append(opts.Opts, libp2p.ConnectionManager(cm)) return }