541ad708c7
In this commit, we add a new sub-package to the walletdb package: migration. In this package, we define a new interface, Manager, which will expose all of the necessary functions required to abstract the migration logic of different sub-services within the wallet, like the address and transaction managers. The implementations of this interface will then be able to use the migration logic within the Upgrade function with no additional complexity.
43 lines
1.3 KiB
Go
43 lines
1.3 KiB
Go
package migration
|
|
|
|
import "github.com/btcsuite/btclog"
|
|
|
|
// 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() {
|
|
DisableLog()
|
|
}
|
|
|
|
// DisableLog disables all library log output. Logging output is disabled
|
|
// by default until either UseLogger or SetLogWriter are 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 a closure that can be printed with %v to be used to
|
|
// generate expensive-to-create data for a detailed log level and avoid doing
|
|
// the work if the data isn't printed.
|
|
type logClosure func() string
|
|
|
|
// String invokes the log closure and returns the results string.
|
|
func (c logClosure) String() string {
|
|
return c()
|
|
}
|
|
|
|
// newLogClosure returns a new closure over the passed function which allows
|
|
// it to be used as a parameter in a logging function that is only invoked when
|
|
// the logging level is such that the message will actually be logged.
|
|
func newLogClosure(c func() string) logClosure {
|
|
return logClosure(c)
|
|
}
|