Files
kubescape/httphandler/handlerequests/v1/serverstate.go
2022-05-19 12:01:28 +03:00

55 lines
907 B
Go

package v1
import "sync"
type serverState struct {
statusID map[string]bool
latestID string
mtx sync.RWMutex
}
// isBusy is server busy with ID, if id is empty will check for latest ID
func (s *serverState) isBusy(id string) bool {
s.mtx.RLock()
if id == "" {
id = s.latestID
}
busy := s.statusID[id]
s.mtx.RUnlock()
return busy
}
func (s *serverState) setBusy(id string) {
s.mtx.Lock()
s.statusID[id] = true
s.latestID = id
s.mtx.Unlock()
}
func (s *serverState) setNotBusy(id string) {
s.mtx.Lock()
delete(s.statusID, id)
s.mtx.Unlock()
}
func (s *serverState) getLatestID() string {
s.mtx.RLock()
id := s.latestID
s.mtx.RUnlock()
return id
}
func (s *serverState) len() int {
s.mtx.RLock()
l := len(s.statusID)
s.mtx.RUnlock()
return l
}
func newServerState() *serverState {
return &serverState{
statusID: make(map[string]bool),
mtx: sync.RWMutex{},
}
}