package gateway import "sync" // logRing keeps the most recent log entries in memory. type logRing struct { mu sync.Mutex entries []LogEntry cap int } func newLogRing(capacity int) *logRing { return &logRing{cap: capacity} } func (r *logRing) add(entry LogEntry) { r.mu.Lock() defer r.mu.Unlock() r.entries = append(r.entries, entry) if len(r.entries) > r.cap { r.entries = r.entries[len(r.entries)-r.cap:] } } // list returns entries newest first. func (r *logRing) list() []LogEntry { r.mu.Lock() defer r.mu.Unlock() out := make([]LogEntry, len(r.entries)) for i, e := range r.entries { out[len(r.entries)-1-i] = e } return out }