cb26fd8a17
This commit introduces the channel notifier which is a central source of active, inactive, and closed channel events. This notifier was originally intended to be used by the `SubscribeChannels` streaming RPC call, but can be used by any subsystem that needs to be notified on a channel becoming active, inactive or closed. It may also be extended in the future to support other types of notifications.
46 lines
1.3 KiB
Go
46 lines
1.3 KiB
Go
package channelnotifier
|
|
|
|
import (
|
|
"github.com/btcsuite/btclog"
|
|
"github.com/lightningnetwork/lnd/build"
|
|
)
|
|
|
|
// log is a logger that is initialized with no output filters. This means the
|
|
// package will not perform any logging by default until the caller requests
|
|
// it.
|
|
var log btclog.Logger
|
|
|
|
// The default amount of logging is none.
|
|
func init() {
|
|
UseLogger(build.NewSubLogger("CHNF", nil))
|
|
}
|
|
|
|
// DisableLog disables all library log output. Logging output is disabled by
|
|
// default until UseLogger is called.
|
|
func DisableLog() {
|
|
UseLogger(btclog.Disabled)
|
|
}
|
|
|
|
// UseLogger uses a specified Logger to output package logging info. This
|
|
// should be used in preference to SetLogWriter if the caller is also using
|
|
// btclog.
|
|
func UseLogger(logger btclog.Logger) {
|
|
log = logger
|
|
}
|
|
|
|
// logClosure is used to provide a closure over expensive logging operations so
|
|
// don't have to be performed when the logging level doesn't warrant it.
|
|
type logClosure func() string
|
|
|
|
// String invokes the underlying function and returns the result.
|
|
func (c logClosure) String() string {
|
|
return c()
|
|
}
|
|
|
|
// newLogClosure returns a new closure over a function that returns a string
|
|
// which itself provides a Stringer interface so that it can be used with the
|
|
// logging system.
|
|
func newLogClosure(c func() string) logClosure {
|
|
return logClosure(c)
|
|
}
|