Data server state aka handlers
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package data
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"github.com/BBVA/kapow/internal/server/model"
|
||||
)
|
||||
|
||||
type safeHandlerMap struct {
|
||||
h map[string]*model.Handler
|
||||
m sync.RWMutex
|
||||
}
|
||||
|
||||
var Handlers = New()
|
||||
|
||||
func New() safeHandlerMap {
|
||||
return safeHandlerMap{
|
||||
h: make(map[string]*model.Handler),
|
||||
m: sync.RWMutex{},
|
||||
}
|
||||
}
|
||||
|
||||
func (hs *safeHandlerMap) Add(handler *model.Handler) {
|
||||
hs.m.Lock()
|
||||
hs.h[handler.Id] = handler
|
||||
hs.m.Unlock()
|
||||
}
|
||||
|
||||
func (hs *safeHandlerMap) Remove(id string) {
|
||||
hs.m.Lock()
|
||||
delete(hs.h, id)
|
||||
hs.m.Unlock()
|
||||
}
|
||||
|
||||
func (hs *safeHandlerMap) Get(id string) (*model.Handler, bool) {
|
||||
hs.m.RLock()
|
||||
hndl, ok := hs.h[id]
|
||||
hs.m.RUnlock()
|
||||
return hndl, ok
|
||||
}
|
||||
Reference in New Issue
Block a user