All checks were successful
Test / Create distribution (push) Successful in 35s
Test / Sandbox (push) Successful in 1m59s
Test / Hakurei (push) Successful in 3m20s
Test / Sandbox (race detector) (push) Successful in 4m26s
Test / Hpkg (push) Successful in 3m47s
Test / Hakurei (race detector) (push) Successful in 5m21s
Test / Flake checks (push) Successful in 1m35s
This helps indicate the exact origin and nature of the error. This eliminates generic WrapErr from container. Signed-off-by: Ophestra <cat@gensokyo.uk>
35 lines
703 B
Go
35 lines
703 B
Go
package container
|
|
|
|
import (
|
|
"log"
|
|
"sync/atomic"
|
|
)
|
|
|
|
type Msg interface {
|
|
IsVerbose() bool
|
|
Verbose(v ...any)
|
|
Verbosef(format string, v ...any)
|
|
|
|
Suspend()
|
|
Resume() bool
|
|
BeforeExit()
|
|
}
|
|
|
|
type DefaultMsg struct{ inactive atomic.Bool }
|
|
|
|
func (msg *DefaultMsg) IsVerbose() bool { return true }
|
|
func (msg *DefaultMsg) Verbose(v ...any) {
|
|
if !msg.inactive.Load() {
|
|
log.Println(v...)
|
|
}
|
|
}
|
|
func (msg *DefaultMsg) Verbosef(format string, v ...any) {
|
|
if !msg.inactive.Load() {
|
|
log.Printf(format, v...)
|
|
}
|
|
}
|
|
|
|
func (msg *DefaultMsg) Suspend() { msg.inactive.Store(true) }
|
|
func (msg *DefaultMsg) Resume() bool { return msg.inactive.CompareAndSwap(true, false) }
|
|
func (msg *DefaultMsg) BeforeExit() {}
|