From 9a1f8e129fe0f9919981b8a1d345a9b455bd76de Mon Sep 17 00:00:00 2001 From: Ophestra Date: Mon, 17 Mar 2025 02:31:46 +0900 Subject: sandbox: wrap fmsg interface Signed-off-by: Ophestra --- internal/sandbox/msg.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 internal/sandbox/msg.go (limited to 'internal/sandbox/msg.go') diff --git a/internal/sandbox/msg.go b/internal/sandbox/msg.go new file mode 100644 index 00000000..5ee18509 --- /dev/null +++ b/internal/sandbox/msg.go @@ -0,0 +1,43 @@ +package sandbox + +import ( + "log" + "sync/atomic" +) + +type Msg interface { + IsVerbose() bool + Verbose(v ...any) + Verbosef(format string, v ...any) + WrapErr(err error, a ...any) error + PrintBaseErr(err error, fallback string) + + 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) WrapErr(err error, a ...any) error { + log.Println(a...) + return err +} +func (msg *DefaultMsg) PrintBaseErr(err error, fallback string) { log.Println(fallback, err) } + +func (msg *DefaultMsg) Suspend() { msg.inactive.Store(true) } +func (msg *DefaultMsg) Resume() bool { return msg.inactive.CompareAndSwap(true, false) } +func (msg *DefaultMsg) BeforeExit() {} -- cgit v1.3.1