package debug import ( "log/slog" app "github.com/alex-savin/go-receipt-tracker/app" ) // Options contains configuration settings for the debug output. type Options struct { // ShowPacketData bool // include decoded packet data (default false) // ShowPings bool // show ping requests and responses (default false) // ShowPasswords bool // show connecting user passwords (default false) } // Hook is a debugging hook which logs additional low-level information from the server. type Hook struct { app.HookBase Log *slog.Logger } // ID returns the ID of the hook. func (h *Hook) ID() string { return "debug" } // Provides indicates that this hook provides all methods. func (h *Hook) Provides(b byte) bool { return true } // Init is called when the hook is initialized. func (h *Hook) Init(config any) error { if _, ok := config.(*Options); !ok && config != nil { return app.ErrInvalidConfigType } if config == nil { config = new(Options) } // h.config = config.(*Options) return nil } // SetOpts is called when the hook receives inheritable server parameters. func (h *Hook) SetOpts(l *slog.Logger) { h.Log = l h.Log.Debug("", "method", "SetOpts") } // Stop is called when the hook is stopped. func (h *Hook) Stop() error { h.Log.Debug("", "method", "Stop") return nil } // OnStarted is called when the server starts. func (h *Hook) OnStarted() { h.Log.Debug("", "method", "OnStarted") } // OnStopped is called when the server stops. func (h *Hook) OnStopped() { h.Log.Debug("", "method", "OnStopped") }