From 24618ab9a1524e8b8986a9bf67667288e642fcf1 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Mon, 17 Mar 2025 02:55:36 +0900 Subject: sandbox: move out of internal Signed-off-by: Ophestra --- sandbox/msg.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 sandbox/msg.go (limited to 'sandbox/msg.go') diff --git a/sandbox/msg.go b/sandbox/msg.go new file mode 100644 index 00000000..5ee18509 --- /dev/null +++ b/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