public AudioRoomEx(IVoiceRoom room)
 {
     this.R = room;
 }
        public void LeaveRoom(IVoiceRoom audioRoom)
        {
            AudioRoomEx roomEx;
            lock (_joinedRooms)
            {
                if (!_joinedRooms.TryGetValue(audioRoom.AudioRoomId, out roomEx))
                    return;
            }

            foreach (var sender in roomEx.Senders)
                _nAudioTest.AudioReceiveEnded(sender.Id);

            lock (_joinedRooms)
            {
                _joinedRooms.Remove(audioRoom.AudioRoomId);
            }
            SendLeaveRoom(roomEx);
        }
        public void TakeMicrophoneFocus(IVoiceRoom room)
        {
            AudioRoomEx roomEx;
            if (!_joinedRooms.TryGetValue(room.AudioRoomId, out roomEx))
                return;

            if (roomEx.MicrophonePriority == _microphonePriority)
                return;

            _microphonePriority++;
            roomEx.MicrophonePriority = _microphonePriority;
        }
 public void JoinRoom(IVoiceRoom audioRoom)
 {
     AudioRoomEx roomEx;
     lock (_joinedRooms)
     {
         if (!_joinedRooms.TryGetValue(audioRoom.AudioRoomId, out roomEx))
         {
             roomEx = new AudioRoomEx(audioRoom);
             _joinedRooms[audioRoom.AudioRoomId] = roomEx;
         }
     }
     SendJoinRoom(roomEx);
 }