Commit 23087566 authored by Jeromy Johnson's avatar Jeromy Johnson Committed by GitHub
Browse files

Merge pull request #204 from libp2p/feat/connmgr

Feat/connmgr
parents dfaa021c f9e0e734
4.4.1: QmapADMpK4e5kFGBxC2aHreaDqKP9vmMng5f91MA14Ces9 4.4.2: QmNoCFYrmNFZxpv4KRGHujfsX2QqC3gH4bLJfkizZHFdUS
...@@ -5,7 +5,7 @@ os: ...@@ -5,7 +5,7 @@ os:
language: go language: go
go: go:
- 1.7 - 1.8
install: true install: true
......
...@@ -9,6 +9,7 @@ import ( ...@@ -9,6 +9,7 @@ import (
logging "github.com/ipfs/go-log" logging "github.com/ipfs/go-log"
goprocess "github.com/jbenet/goprocess" goprocess "github.com/jbenet/goprocess"
connmgr "github.com/libp2p/go-libp2p-connmgr"
metrics "github.com/libp2p/go-libp2p-metrics" metrics "github.com/libp2p/go-libp2p-metrics"
mstream "github.com/libp2p/go-libp2p-metrics/stream" mstream "github.com/libp2p/go-libp2p-metrics/stream"
inet "github.com/libp2p/go-libp2p-net" inet "github.com/libp2p/go-libp2p-net"
...@@ -58,6 +59,7 @@ type BasicHost struct { ...@@ -58,6 +59,7 @@ type BasicHost struct {
ids *identify.IDService ids *identify.IDService
natmgr NATManager natmgr NATManager
addrs AddrsFactory addrs AddrsFactory
cmgr connmgr.ConnManager
negtimeout time.Duration negtimeout time.Duration
...@@ -92,6 +94,9 @@ type HostOpts struct { ...@@ -92,6 +94,9 @@ type HostOpts struct {
// //
BandwidthReporter metrics.Reporter 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. // 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 { ...@@ -131,6 +136,13 @@ func NewHost(net inet.Network, opts *HostOpts) *BasicHost {
h.ids.Reporter = opts.BandwidthReporter 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 { h.proc = goprocess.WithTeardown(func() error {
if h.natmgr != nil { if h.natmgr != nil {
h.natmgr.Close() h.natmgr.Close()
...@@ -161,6 +173,8 @@ func New(net inet.Network, opts ...interface{}) *BasicHost { ...@@ -161,6 +173,8 @@ func New(net inet.Network, opts ...interface{}) *BasicHost {
hostopts.BandwidthReporter = o hostopts.BandwidthReporter = o
case AddrsFactory: case AddrsFactory:
hostopts.AddrsFactory = AddrsFactory(o) 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 { ...@@ -411,6 +425,10 @@ func (h *BasicHost) dialPeer(ctx context.Context, p peer.ID) error {
return nil return nil
} }
func (h *BasicHost) ConnManager() connmgr.ConnManager {
return h.cmgr
}
// Addrs returns listening addresses that are safe to announce to the network. // Addrs returns listening addresses that are safe to announce to the network.
// The output is the same as AllAddrs, but processed by AddrsFactory. // The output is the same as AllAddrs, but processed by AddrsFactory.
func (h *BasicHost) Addrs() []ma.Multiaddr { func (h *BasicHost) Addrs() []ma.Multiaddr {
......
...@@ -8,6 +8,7 @@ import ( ...@@ -8,6 +8,7 @@ import (
host "github.com/libp2p/go-libp2p-host" host "github.com/libp2p/go-libp2p-host"
logging "github.com/ipfs/go-log" logging "github.com/ipfs/go-log"
connmgr "github.com/libp2p/go-libp2p-connmgr"
lgbl "github.com/libp2p/go-libp2p-loggables" lgbl "github.com/libp2p/go-libp2p-loggables"
inet "github.com/libp2p/go-libp2p-net" inet "github.com/libp2p/go-libp2p-net"
peer "github.com/libp2p/go-libp2p-peer" peer "github.com/libp2p/go-libp2p-peer"
...@@ -124,5 +125,8 @@ func (rh *RoutedHost) Close() error { ...@@ -124,5 +125,8 @@ func (rh *RoutedHost) Close() error {
// no need to close IpfsRouting. we dont own it. // no need to close IpfsRouting. we dont own it.
return rh.host.Close() return rh.host.Close()
} }
func (rh *RoutedHost) ConnManager() connmgr.ConnManager {
return rh.host.ConnManager()
}
var _ (host.Host) = (*RoutedHost)(nil) var _ (host.Host) = (*RoutedHost)(nil)
...@@ -205,9 +205,9 @@ ...@@ -205,9 +205,9 @@
}, },
{ {
"author": "whyrusleeping", "author": "whyrusleeping",
"hash": "QmZy7c24mmkEHpNJndwgsEE3wcVxHd8yB969yTnAJFVw7f", "hash": "QmRNyPNJGNCaZyYonJj7owciWTsMd9gRfEKmZY3o6xwN3h",
"name": "go-libp2p-host", "name": "go-libp2p-host",
"version": "1.3.15" "version": "1.3.16"
}, },
{ {
"author": "whyrusleeping", "author": "whyrusleeping",
...@@ -229,9 +229,9 @@ ...@@ -229,9 +229,9 @@
}, },
{ {
"author": "whyrusleeping", "author": "whyrusleeping",
"hash": "QmQoFme2KBiCZmCwKDLoCVZShkYGjPt4YR7ihZK5c3vtzH", "hash": "QmbQXcWAa9ZbTH74m6yroexY8QjTS4oivLNEFwjamZCJTU",
"name": "go-libp2p-blankhost", "name": "go-libp2p-blankhost",
"version": "0.1.14" "version": "0.1.15"
} }
], ],
"gxVersion": "0.4.0", "gxVersion": "0.4.0",
...@@ -239,6 +239,6 @@ ...@@ -239,6 +239,6 @@
"license": "MIT", "license": "MIT",
"name": "go-libp2p", "name": "go-libp2p",
"releaseCmd": "git commit -a -m \"gx publish $VERSION\"", "releaseCmd": "git commit -a -m \"gx publish $VERSION\"",
"version": "4.4.1" "version": "4.4.2"
} }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment