move locks and bans to state.
This commit is contained in:
61
server/internal/websocket/state/state.go
Normal file
61
server/internal/websocket/state/state.go
Normal file
@ -0,0 +1,61 @@
|
||||
package state
|
||||
|
||||
type State struct {
|
||||
banned map[string]string // IP -> session ID (that banned it)
|
||||
locked map[string]string // resource name -> session ID (that locked it)
|
||||
}
|
||||
|
||||
func New() *State {
|
||||
return &State{
|
||||
banned: make(map[string]string),
|
||||
locked: make(map[string]string),
|
||||
}
|
||||
}
|
||||
|
||||
// Ban
|
||||
|
||||
func (s *State) Ban(ip, id string) {
|
||||
s.banned[ip] = id
|
||||
}
|
||||
|
||||
func (s *State) Unban(ip string) {
|
||||
delete(s.banned, ip)
|
||||
}
|
||||
|
||||
func (s *State) IsBanned(ip string) bool {
|
||||
_, ok := s.banned[ip]
|
||||
return ok
|
||||
}
|
||||
|
||||
func (s *State) GetBanned(ip string) (string, bool) {
|
||||
id, ok := s.banned[ip]
|
||||
return id, ok
|
||||
}
|
||||
|
||||
func (s *State) AllBanned() map[string]string {
|
||||
return s.banned
|
||||
}
|
||||
|
||||
// Lock
|
||||
|
||||
func (s *State) Lock(resource, id string) {
|
||||
s.locked[resource] = id
|
||||
}
|
||||
|
||||
func (s *State) Unlock(resource string) {
|
||||
delete(s.locked, resource)
|
||||
}
|
||||
|
||||
func (s *State) IsLocked(resource string) bool {
|
||||
_, ok := s.locked[resource]
|
||||
return ok
|
||||
}
|
||||
|
||||
func (s *State) GetLocked(resource string) (string, bool) {
|
||||
id, ok := s.locked[resource]
|
||||
return id, ok
|
||||
}
|
||||
|
||||
func (s *State) AllLocked() map[string]string {
|
||||
return s.locked
|
||||
}
|
Reference in New Issue
Block a user