mirror of
https://github.com/kubescape/kubescape.git
synced 2026-04-15 06:58:11 +00:00
55 lines
907 B
Go
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{},
|
|
}
|
|
}
|