mirror of
https://github.com/netbirdio/netbird.git
synced 2025-03-13 14:18:47 +01:00
49 lines
850 B
Go
49 lines
850 B
Go
|
package store
|
||
|
|
||
|
import (
|
||
|
"sync"
|
||
|
|
||
|
"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()
|
||
|
m.events = make(map[string]*types.Event)
|
||
|
}
|
||
|
|
||
|
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)
|
||
|
}
|
||
|
}
|