btcd/connmgr
Josh Rickmar a6965d493f all: Remove seelog logger.
The btclog package has been changed to defining its own logging
interface (rather than seelog's) and provides a default implementation
for callers to use.

There are two primary advantages to the new logger implementation.

First, all log messages are created before the call returns.  Compared
to seelog, this prevents data races when mutable variables are logged.

Second, the new logger does not implement any kind of artifical rate
limiting (what seelog refers to as "adaptive logging").  Log messages
are outputted as soon as possible and the application will appear to
perform much better when watching standard output.

Because log rotation is not a feature of the btclog logging
implementation, it is handled by the main package by importing a file
rotation package that provides an io.Reader interface for creating
output to a rotating file output.  The rotator has been configured
with the same defaults that btcd previously used in the seelog config
(10MB file limits with maximum of 3 rolls) but now compresses newly
created roll files.  Due to the high compressibility of log text, the
compressed files typically reduce to around 15-30% of the original
10MB file.
2017-06-19 16:46:50 -04:00
..
connmanager_test.go all: Remove seelog logger. 2017-06-19 16:46:50 -04:00
connmanager.go connmgr: switch to using net.Addr interface throughout for addresses 2016-11-10 11:22:36 -08:00
doc.go connmgr: Refactor connection management into pkg 2016-10-22 01:11:57 -05:00
dynamicbanscore_test.go connmgr: Refactor connection management into pkg 2016-10-22 01:11:57 -05:00
dynamicbanscore.go connmgr: unexport the DynamicBanScore mutex. 2016-11-01 14:53:15 -05:00
log.go connmgr: Refactor connection management into pkg 2016-10-22 01:11:57 -05:00
README.md multi: Update markdown files for GFM changes. 2017-05-25 12:06:16 -05:00
seed.go wire: Treat NetAddress more like immutable 2016-12-06 20:48:02 +01:00
tor.go Fix comparator that could cause a panic 2017-06-07 17:59:33 -05:00

connmgr

Build Status ISC License GoDoc

Package connmgr implements a generic Bitcoin network connection manager.

Overview

Connection Manager handles all the general connection concerns such as maintaining a set number of outbound connections, sourcing peers, banning, limiting max connections, tor lookup, etc.

The package provides a generic connection manager which is able to accept connection requests from a source or a set of given addresses, dial them and notify the caller on connections. The main intended use is to initialize a pool of active connections and maintain them to remain connected to the P2P network.

In addition the connection manager provides the following utilities:

  • Notifications on connections or disconnections
  • Handle failures and retry new addresses from the source
  • Connect only to specified addresses
  • Permanent connections with increasing backoff retry timers
  • Disconnect or Remove an established connection

Installation and Updating

$ go get -u github.com/btcsuite/btcd/connmgr

License

Package connmgr is licensed under the copyfree ISC License.