From 3db298ec3eca0ed94cb7912f660df7dd1f4582e0 Mon Sep 17 00:00:00 2001 From: plutorocks <> Date: Thu, 26 Feb 2026 21:30:32 +0000 Subject: initial commit --- events.go | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 events.go (limited to 'events.go') diff --git a/events.go b/events.go new file mode 100644 index 0000000..9800e39 --- /dev/null +++ b/events.go @@ -0,0 +1,49 @@ +// events.go +package main + +type Event struct { + ID int64 `json:"id"` + Type string `json:"type"` // "chat" or "location" + Timestamp int64 `json:"timestamp"` + FromNick string `json:"fromNick,omitempty"` + FromInternal string `json:"fromInternal,omitempty"` + Message string `json:"message,omitempty"` + ServerID string `json:"serverId,omitempty"` + X float64 `json:"x,omitempty"` + Y float64 `json:"y,omitempty"` + Z float64 `json:"z,omitempty"` + Dimension string `json:"dimension,omitempty"` +} + +func (h *Hub) addEvent(e Event) { + h.mu.Lock() + defer h.mu.Unlock() + + e.ID = h.nextEventID + h.nextEventID++ + + if len(h.events) >= h.maxEvents { + copy(h.events, h.events[1:]) + h.events[len(h.events)-1] = e + } else { + h.events = append(h.events, e) + } +} + +func (h *Hub) getEventsSince(since int64) []Event { + h.mu.RLock() + defer h.mu.RUnlock() + + if since <= 0 { + out := make([]Event, len(h.events)) + copy(out, h.events) + return out + } + var res []Event + for _, e := range h.events { + if e.ID > since { + res = append(res, e) + } + } + return res +} \ No newline at end of file -- cgit v1.2.3