sessions.go 720 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package engineio
  2. import (
  3. "sync"
  4. )
  5. type Sessions interface {
  6. Get(id string) Conn
  7. Set(id string, conn Conn)
  8. Remove(id string)
  9. }
  10. type serverSessions struct {
  11. sessions map[string]Conn
  12. locker sync.RWMutex
  13. }
  14. func newServerSessions() *serverSessions {
  15. return &serverSessions{
  16. sessions: make(map[string]Conn),
  17. }
  18. }
  19. func (s *serverSessions) Get(id string) Conn {
  20. s.locker.RLock()
  21. defer s.locker.RUnlock()
  22. ret, ok := s.sessions[id]
  23. if !ok {
  24. return nil
  25. }
  26. return ret
  27. }
  28. func (s *serverSessions) Set(id string, conn Conn) {
  29. s.locker.Lock()
  30. defer s.locker.Unlock()
  31. s.sessions[id] = conn
  32. }
  33. func (s *serverSessions) Remove(id string) {
  34. s.locker.Lock()
  35. defer s.locker.Unlock()
  36. delete(s.sessions, id)
  37. }