mirror of
https://github.com/strukturag/nextcloud-spreed-signaling
synced 2024-04-25 10:50:29 +02:00
Improve locking and allow concurrent reading.
This commit is contained in:
parent
9a24694f37
commit
6b1dd1ed4c
|
@ -28,7 +28,7 @@ import (
|
||||||
type BuiltinRoomSessions struct {
|
type BuiltinRoomSessions struct {
|
||||||
sessionIdToRoomSession map[string]string
|
sessionIdToRoomSession map[string]string
|
||||||
roomSessionToSessionid map[string]string
|
roomSessionToSessionid map[string]string
|
||||||
mu sync.Mutex
|
mu sync.RWMutex
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewBuiltinRoomSessions() (RoomSessions, error) {
|
func NewBuiltinRoomSessions() (RoomSessions, error) {
|
||||||
|
@ -44,9 +44,10 @@ func (r *BuiltinRoomSessions) SetRoomSession(session Session, roomSessionId stri
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
r.mu.Lock()
|
|
||||||
defer r.mu.Unlock()
|
|
||||||
if sid := session.PublicId(); sid != "" {
|
if sid := session.PublicId(); sid != "" {
|
||||||
|
r.mu.Lock()
|
||||||
|
defer r.mu.Unlock()
|
||||||
|
|
||||||
r.sessionIdToRoomSession[sid] = roomSessionId
|
r.sessionIdToRoomSession[sid] = roomSessionId
|
||||||
r.roomSessionToSessionid[roomSessionId] = sid
|
r.roomSessionToSessionid[roomSessionId] = sid
|
||||||
}
|
}
|
||||||
|
@ -54,9 +55,10 @@ func (r *BuiltinRoomSessions) SetRoomSession(session Session, roomSessionId stri
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *BuiltinRoomSessions) DeleteRoomSession(session Session) {
|
func (r *BuiltinRoomSessions) DeleteRoomSession(session Session) {
|
||||||
r.mu.Lock()
|
|
||||||
defer r.mu.Unlock()
|
|
||||||
if sid := session.PublicId(); sid != "" {
|
if sid := session.PublicId(); sid != "" {
|
||||||
|
r.mu.Lock()
|
||||||
|
defer r.mu.Unlock()
|
||||||
|
|
||||||
if roomSessionId, found := r.sessionIdToRoomSession[sid]; found {
|
if roomSessionId, found := r.sessionIdToRoomSession[sid]; found {
|
||||||
delete(r.sessionIdToRoomSession, sid)
|
delete(r.sessionIdToRoomSession, sid)
|
||||||
if r.roomSessionToSessionid[roomSessionId] == sid {
|
if r.roomSessionToSessionid[roomSessionId] == sid {
|
||||||
|
@ -67,8 +69,8 @@ func (r *BuiltinRoomSessions) DeleteRoomSession(session Session) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *BuiltinRoomSessions) GetSessionId(roomSessionId string) (string, error) {
|
func (r *BuiltinRoomSessions) GetSessionId(roomSessionId string) (string, error) {
|
||||||
r.mu.Lock()
|
r.mu.RLock()
|
||||||
defer r.mu.Unlock()
|
defer r.mu.RUnlock()
|
||||||
sid, found := r.roomSessionToSessionid[roomSessionId]
|
sid, found := r.roomSessionToSessionid[roomSessionId]
|
||||||
if !found {
|
if !found {
|
||||||
return "", ErrNoSuchRoomSession
|
return "", ErrNoSuchRoomSession
|
||||||
|
|
Loading…
Reference in a new issue