Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( //ErrDialNil is used to indicate that Dial cannot be nil in the configuration. ErrDialNil = errors.New("Config: Dial cannot be nil") )
Functions ¶
func DisableLog ¶
func DisableLog()
DisableLog disables all library log output. Logging output is disabled by default until either UseLogger or SetLogWriter are called.
Types ¶
type Config ¶
type Config struct { // Listeners defines a slice of listeners for which the connection // manager will take ownership of and accept connections. When a // connection is accepted, the OnAccept handler will be invoked with the // connection. Since the connection manager takes ownership of these // listeners, they will be closed when the connection manager is // stopped. // // This field will not have any effect if the OnAccept field is not // also specified. It may be nil if the caller does not wish to listen // for incoming connections. Listeners []net.Listener // OnAccept is a callback that is fired when an inbound connection is // accepted. It is the caller's responsibility to close the connection. // Failure to close the connection will result in the connection manager // believing the connection is still active and thus have undesirable // side effects such as still counting toward maximum connection limits. // // This field will not have any effect if the Listeners field is not // also specified since there couldn't possibly be any accepted // connections in that case. OnAccept func(net.Conn) // RetryDuration is the duration to wait before retrying connection // requests. Defaults to 5s. RetryDuration time.Duration // OnConnection is a callback that is fired when a new outbound // connection is established. OnConnection func(*ConnReq, net.Conn) // OnDisconnection is a callback that is fired when an outbound // connection is disconnected. OnDisconnection func(*ConnReq) // Dial connects to the address on the named network. It cannot be nil. Dial func(net.Addr) (net.Conn, error) }
Config holds the configuration options related to the connection manager.
type ConnManager ¶
type ConnManager struct {
// contains filtered or unexported fields
}
ConnManager provides a manager to handle network connections.
func New ¶
func New(cfg *Config) (*ConnManager, error)
New returns a new connection manager. Use Start to start connecting to the network.
func (*ConnManager) Connect ¶
func (cm *ConnManager) Connect(c *ConnReq)
Connect assigns an id and dials a connection to the address of the connection request.
func (*ConnManager) Disconnect ¶
func (cm *ConnManager) Disconnect(id uint64)
Disconnect disconnects the connection corresponding to the given connection id. If permanent, the connection will be retried with an increasing backoff duration.
func (*ConnManager) Remove ¶
func (cm *ConnManager) Remove(id uint64)
Remove removes the connection corresponding to the given connection id from known connections.
NOTE: This method can also be used to cancel a lingering connection attempt that hasn't yet succeeded.
func (*ConnManager) Start ¶
func (cm *ConnManager) Start()
Start launches the connection manager and begins connecting to the network.
func (*ConnManager) Stop ¶
func (cm *ConnManager) Stop()
Stop gracefully shuts down the connection manager.
func (*ConnManager) Wait ¶
func (cm *ConnManager) Wait()
Wait blocks until the connection manager halts gracefully.
type ConnReq ¶
type ConnReq struct { PID [33]byte // PID is the peer public key id from PeerAddr Addr net.Addr // contains filtered or unexported fields }
ConnReq is the connection request to a network address. If permanent, the connection will be retried on disconnection.
type ConnState ¶
type ConnState uint8
ConnState represents the state of the requested connection.
ConnState can be either pending, established, disconnected or failed. When a new connection is requested, it is attempted and categorized as established or failed depending on the connection result. An established connection which was disconnected is categorized as disconnected.