GameRoom *GameRoomManager::getAvailableGameRoom(){ auto room = getGameRoom(available); if (!room || room->isPlaying()) { available = INVALID_ID; } if (available == INVALID_ID){ available = createGameRoom(); } return getGameRoom(available); }
ChatRoom* ChatManagerImplementation::createRoomByFullPath(const String& path) { StringTokenizer tokenizer(path); tokenizer.setDelimeter("."); String game; tokenizer.getStringToken(game); ChatRoom* gameRoom = getGameRoom(game); if (gameRoom == NULL) return NULL; String channel; ChatRoom* room = gameRoom; while (tokenizer.hasMoreTokens()) { tokenizer.getStringToken(channel); if (room->getSubRoom(channel) == NULL) break; else room = room->getSubRoom(channel); } if (room == gameRoom) return NULL; if (room->isPrivate()) return NULL; ChatRoom* newRoom = createRoom(channel, room); room->addSubRoom(newRoom); return newRoom; }
ChatRoom* ChatManagerImplementation::getChatRoomByFullPath(const String& path) { StringTokenizer tokenizer(path); tokenizer.setDelimeter("."); if (!tokenizer.hasMoreTokens()) return NULL; String game; tokenizer.getStringToken(game); ChatRoom* gameRoom = getGameRoom(game); if (gameRoom == NULL) return NULL; String gamePath; tokenizer.finalToken(gamePath); return getChatRoomByGamePath(gameRoom, gamePath); }