mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-11-15 20:55:17 +00:00
68 lines
1.9 KiB
Go
68 lines
1.9 KiB
Go
|
package network
|
||
|
|
||
|
import (
|
||
|
ma "github.com/multiformats/go-multiaddr"
|
||
|
)
|
||
|
|
||
|
// Notifiee is an interface for an object wishing to receive
|
||
|
// notifications from a Network.
|
||
|
type Notifiee interface {
|
||
|
Listen(Network, ma.Multiaddr) // called when network starts listening on an addr
|
||
|
ListenClose(Network, ma.Multiaddr) // called when network stops listening on an addr
|
||
|
Connected(Network, Conn) // called when a connection opened
|
||
|
Disconnected(Network, Conn) // called when a connection closed
|
||
|
}
|
||
|
|
||
|
// NotifyBundle implements Notifiee by calling any of the functions set on it,
|
||
|
// and nop'ing if they are unset. This is the easy way to register for
|
||
|
// notifications.
|
||
|
type NotifyBundle struct {
|
||
|
ListenF func(Network, ma.Multiaddr)
|
||
|
ListenCloseF func(Network, ma.Multiaddr)
|
||
|
|
||
|
ConnectedF func(Network, Conn)
|
||
|
DisconnectedF func(Network, Conn)
|
||
|
}
|
||
|
|
||
|
var _ Notifiee = (*NotifyBundle)(nil)
|
||
|
|
||
|
// Listen calls ListenF if it is not null.
|
||
|
func (nb *NotifyBundle) Listen(n Network, a ma.Multiaddr) {
|
||
|
if nb.ListenF != nil {
|
||
|
nb.ListenF(n, a)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ListenClose calls ListenCloseF if it is not null.
|
||
|
func (nb *NotifyBundle) ListenClose(n Network, a ma.Multiaddr) {
|
||
|
if nb.ListenCloseF != nil {
|
||
|
nb.ListenCloseF(n, a)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Connected calls ConnectedF if it is not null.
|
||
|
func (nb *NotifyBundle) Connected(n Network, c Conn) {
|
||
|
if nb.ConnectedF != nil {
|
||
|
nb.ConnectedF(n, c)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Disconnected calls DisconnectedF if it is not null.
|
||
|
func (nb *NotifyBundle) Disconnected(n Network, c Conn) {
|
||
|
if nb.DisconnectedF != nil {
|
||
|
nb.DisconnectedF(n, c)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Global noop notifiee. Do not change.
|
||
|
var GlobalNoopNotifiee = &NoopNotifiee{}
|
||
|
|
||
|
type NoopNotifiee struct{}
|
||
|
|
||
|
var _ Notifiee = (*NoopNotifiee)(nil)
|
||
|
|
||
|
func (nn *NoopNotifiee) Connected(n Network, c Conn) {}
|
||
|
func (nn *NoopNotifiee) Disconnected(n Network, c Conn) {}
|
||
|
func (nn *NoopNotifiee) Listen(n Network, addr ma.Multiaddr) {}
|
||
|
func (nn *NoopNotifiee) ListenClose(n Network, addr ma.Multiaddr) {}
|