From 665234f694dc69660c928c5145ecb31facf2d2d7 Mon Sep 17 00:00:00 2001 From: Jeromy Date: Tue, 11 Jul 2017 15:17:21 -0700 Subject: [PATCH] WIP: add ConnManager interface method --- p2p/host/basic/basic_host.go | 18 ++++++++++++++++++ p2p/host/routed/routed.go | 4 ++++ 2 files changed, 22 insertions(+) diff --git a/p2p/host/basic/basic_host.go b/p2p/host/basic/basic_host.go index f0297f1..88e8c60 100644 --- a/p2p/host/basic/basic_host.go +++ b/p2p/host/basic/basic_host.go @@ -9,6 +9,7 @@ import ( logging "github.com/ipfs/go-log" goprocess "github.com/jbenet/goprocess" + connmgr "github.com/libp2p/go-libp2p-connmgr" metrics "github.com/libp2p/go-libp2p-metrics" mstream "github.com/libp2p/go-libp2p-metrics/stream" inet "github.com/libp2p/go-libp2p-net" @@ -58,6 +59,7 @@ type BasicHost struct { ids *identify.IDService natmgr NATManager addrs AddrsFactory + cmgr connmgr.ConnManager negtimeout time.Duration @@ -92,6 +94,9 @@ type HostOpts struct { // BandwidthReporter metrics.Reporter + + // ConnManager is a libp2p connection manager + ConnManager connmgr.ConnManager } // NewHost constructs a new *BasicHost and activates it by attaching its stream and connection handlers to the given inet.Network. @@ -131,6 +136,13 @@ func NewHost(net inet.Network, opts *HostOpts) *BasicHost { h.ids.Reporter = opts.BandwidthReporter } + if opts.ConnManager == nil { + // create 'disabled' conn manager for now + h.cmgr = connmgr.NewConnManager(0, 0, 0) + } else { + h.cmgr = opts.ConnManager + } + h.proc = goprocess.WithTeardown(func() error { if h.natmgr != nil { h.natmgr.Close() @@ -161,6 +173,8 @@ func New(net inet.Network, opts ...interface{}) *BasicHost { hostopts.BandwidthReporter = o case AddrsFactory: hostopts.AddrsFactory = AddrsFactory(o) + case connmgr.ConnManager: + hostopts.ConnManager = o } } @@ -411,6 +425,10 @@ func (h *BasicHost) dialPeer(ctx context.Context, p peer.ID) error { return nil } +func (h *BasicHost) ConnManager() connmgr.ConnManager { + return h.cmgr +} + // Addrs returns listening addresses that are safe to announce to the network. // The output is the same as AllAddrs, but processed by AddrsFactory. func (h *BasicHost) Addrs() []ma.Multiaddr { diff --git a/p2p/host/routed/routed.go b/p2p/host/routed/routed.go index 97493ad..92e77a5 100644 --- a/p2p/host/routed/routed.go +++ b/p2p/host/routed/routed.go @@ -8,6 +8,7 @@ import ( host "github.com/libp2p/go-libp2p-host" logging "github.com/ipfs/go-log" + connmgr "github.com/libp2p/go-libp2p-connmgr" lgbl "github.com/libp2p/go-libp2p-loggables" inet "github.com/libp2p/go-libp2p-net" peer "github.com/libp2p/go-libp2p-peer" @@ -124,5 +125,8 @@ func (rh *RoutedHost) Close() error { // no need to close IpfsRouting. we dont own it. return rh.host.Close() } +func (rh *RoutedHost) ConnManager() connmgr.ConnManager { + return rh.host.ConnManager() +} var _ (host.Host) = (*RoutedHost)(nil) -- GitLab