2025-02-27 13:05:20 +01:00
|
|
|
package store
|
|
|
|
|
|
|
|
import (
|
|
|
|
"sync"
|
|
|
|
|
2025-03-07 13:56:00 +01:00
|
|
|
"golang.org/x/exp/maps"
|
|
|
|
|
2025-02-27 13:05:20 +01:00
|
|
|
"github.com/netbirdio/netbird/client/internal/netflow/types"
|
|
|
|
)
|
|
|
|
|
|
|
|
func NewMemoryStore() *Memory {
|
|
|
|
return &Memory{
|
|
|
|
events: make(map[string]*types.Event),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
type Memory struct {
|
|
|
|
mux sync.Mutex
|
|
|
|
events map[string]*types.Event
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Memory) StoreEvent(event *types.Event) {
|
|
|
|
m.mux.Lock()
|
|
|
|
defer m.mux.Unlock()
|
|
|
|
m.events[event.ID] = event
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Memory) Close() {
|
|
|
|
m.mux.Lock()
|
|
|
|
defer m.mux.Unlock()
|
2025-03-07 13:56:00 +01:00
|
|
|
maps.Clear(m.events)
|
2025-02-27 13:05:20 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Memory) GetEvents() []*types.Event {
|
|
|
|
m.mux.Lock()
|
|
|
|
defer m.mux.Unlock()
|
|
|
|
events := make([]*types.Event, 0, len(m.events))
|
|
|
|
for _, event := range m.events {
|
|
|
|
events = append(events, event)
|
|
|
|
}
|
|
|
|
return events
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Memory) DeleteEvents(ids []string) {
|
|
|
|
m.mux.Lock()
|
|
|
|
defer m.mux.Unlock()
|
|
|
|
for _, id := range ids {
|
|
|
|
delete(m.events, id)
|
|
|
|
}
|
|
|
|
}
|