|
|
@ -164,6 +164,10 @@ func (h *Hub) GetRoom(id string) *RoomWorker { |
|
|
|
if !ok { |
|
|
|
if !ok { |
|
|
|
h.mutex.RUnlock() |
|
|
|
h.mutex.RUnlock() |
|
|
|
h.mutex.Lock() |
|
|
|
h.mutex.Lock() |
|
|
|
|
|
|
|
// need to re-check, another thread might have created the room
|
|
|
|
|
|
|
|
// while we waited for the lock
|
|
|
|
|
|
|
|
room, ok = h.roomTable[id] |
|
|
|
|
|
|
|
if !ok { |
|
|
|
room = NewRoomWorker(h, id) |
|
|
|
room = NewRoomWorker(h, id) |
|
|
|
h.roomTable[id] = room |
|
|
|
h.roomTable[id] = room |
|
|
|
h.mutex.Unlock() |
|
|
|
h.mutex.Unlock() |
|
|
@ -176,6 +180,9 @@ func (h *Hub) GetRoom(id string) *RoomWorker { |
|
|
|
delete(h.roomTable, id) |
|
|
|
delete(h.roomTable, id) |
|
|
|
log.Printf("Cleaned up room '%s'\n", id) |
|
|
|
log.Printf("Cleaned up room '%s'\n", id) |
|
|
|
}() |
|
|
|
}() |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
h.mutex.Unlock() |
|
|
|
|
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
h.mutex.RUnlock() |
|
|
|
h.mutex.RUnlock() |
|
|
|
} |
|
|
|
} |
|
|
|