sync: migrate ai-operator to Gitea (2026-08-10)
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package call
|
||||
|
||||
import "sync"
|
||||
|
||||
type SessionStore struct {
|
||||
mu sync.RWMutex
|
||||
sessions map[string]*CallSession
|
||||
}
|
||||
|
||||
func NewSessionStore() *SessionStore { return &SessionStore{sessions: make(map[string]*CallSession)} }
|
||||
|
||||
func (s *SessionStore) Create(session *CallSession) {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
s.sessions[session.AsteriskChannelID] = session
|
||||
}
|
||||
func (s *SessionStore) Get(channelID string) (*CallSession, bool) {
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
session, ok := s.sessions[channelID]
|
||||
return session, ok
|
||||
}
|
||||
func (s *SessionStore) Delete(channelID string) {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
delete(s.sessions, channelID)
|
||||
}
|
||||
func (s *SessionStore) Count() int {
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
return len(s.sessions)
|
||||
}
|
||||
func (s *SessionStore) List() []*CallSession {
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
out := make([]*CallSession, 0, len(s.sessions))
|
||||
for _, session := range s.sessions {
|
||||
out = append(out, session)
|
||||
}
|
||||
return out
|
||||
}
|
||||
Reference in New Issue
Block a user