event.go 593 B

123456789101112131415161718192021222324252627282930313233
  1. package cache
  2. import (
  3. "sync"
  4. "github.com/710leo/urlooker/dataobj"
  5. )
  6. type SafeEventMap struct {
  7. sync.RWMutex
  8. M map[string]*dataobj.Event
  9. }
  10. var LastEvents = &SafeEventMap{M: make(map[string]*dataobj.Event)}
  11. func (this *SafeEventMap) Get(key string) (*dataobj.Event, bool) {
  12. this.RLock()
  13. defer this.RUnlock()
  14. event, exists := this.M[key]
  15. return event, exists
  16. }
  17. func (this *SafeEventMap) Set(key string, event *dataobj.Event) {
  18. this.Lock()
  19. defer this.Unlock()
  20. this.M[key] = event
  21. }
  22. func (this *SafeEventMap) Len() int {
  23. this.RLock()
  24. defer this.RUnlock()
  25. return len(this.M)
  26. }