Files
2026-09-25 11:57:14 +08:00

21 lines
672 B
Go

package audit
import "strings"
type Tracker struct { windows map[string]*Window }
func NewTracker() *Tracker { return &Tracker{windows: make(map[string]*Window)} }
func (t *Tracker) Accept(frame Frame) string {
if strings.TrimSpace(frame.Device) == "" { return "missing device" }
window := t.windows[frame.Device]
if window == nil { window = &Window{}; t.windows[frame.Device] = window }
return window.Observe(frame.Sequence)
}
func (t *Tracker) Snapshot() map[string]Summary {
result := make(map[string]Summary, len(t.windows))
for device, window := range t.windows { result[device] = window.Summary }
return result
}