Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -628,7 +628,7 @@ ServerGame::GetPlayerIdList() const
|
|||||||
PlayerIdList
|
PlayerIdList
|
||||||
ServerGame::GetSpectatorIdList() const
|
ServerGame::GetSpectatorIdList() const
|
||||||
{
|
{
|
||||||
return GetSessionManager().GetPlayerIdList(SessionData::Spectating);
|
return GetSessionManager().GetPlayerIdList(SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
@@ -909,7 +909,7 @@ ServerGame::RemovePlayerData(boost::shared_ptr<PlayerData> player, int reason, b
|
|||||||
netPlayerLeft->set_playerid(player->GetUniqueId());
|
netPlayerLeft->set_playerid(player->GetUniqueId());
|
||||||
netPlayerLeft->set_gameplayerleftreason(netReason);
|
netPlayerLeft->set_gameplayerleftreason(netReason);
|
||||||
}
|
}
|
||||||
GetSessionManager().SendToAllSessions(GetLobbyThread().GetSender(), thisPlayerLeft, SessionData::Game);
|
GetSessionManager().SendToAllSessions(GetLobbyThread().GetSender(), thisPlayerLeft, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
|
|
||||||
GetState().NotifySessionRemoved(shared_from_this());
|
GetState().NotifySessionRemoved(shared_from_this());
|
||||||
if (spectateOnly) {
|
if (spectateOnly) {
|
||||||
|
|||||||
@@ -286,7 +286,7 @@ AbstractServerGameStateReceiving::ProcessPacket(boost::shared_ptr<ServerGame> se
|
|||||||
netChat->set_playerid(session->GetPlayerData()->GetUniqueId());
|
netChat->set_playerid(session->GetPlayerData()->GetUniqueId());
|
||||||
netChat->set_chattype(ChatMessage::chatTypeGame);
|
netChat->set_chattype(ChatMessage::chatTypeGame);
|
||||||
netChat->set_chattext(netChatRequest.chattext());
|
netChat->set_chattext(netChatRequest.chattext());
|
||||||
server->SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating);
|
server->SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
chatSent = true;
|
chatSent = true;
|
||||||
|
|
||||||
// Send the message to the chat cleaner bot for ranking games.
|
// Send the message to the chat cleaner bot for ranking games.
|
||||||
@@ -461,9 +461,9 @@ AbstractServerGameStateReceiving::AcceptNewSession(boost::shared_ptr<ServerGame>
|
|||||||
|
|
||||||
// Send "Player Joined"/"Spectator Joined" to other fully connected clients.
|
// Send "Player Joined"/"Spectator Joined" to other fully connected clients.
|
||||||
if (spectateOnly) {
|
if (spectateOnly) {
|
||||||
server->SendToAllPlayers(CreateNetPacketSpectatorJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game | SessionData::Spectating);
|
server->SendToAllPlayers(CreateNetPacketSpectatorJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
} else {
|
} else {
|
||||||
server->SendToAllPlayers(CreateNetPacketPlayerJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game | SessionData::Spectating);
|
server->SendToAllPlayers(CreateNetPacketPlayerJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Accept session.
|
// Accept session.
|
||||||
@@ -647,7 +647,7 @@ ServerGameStateInit::SendStartEvent(ServerGame &server, bool fillWithComputerPla
|
|||||||
server.AddComputerPlayer(tmpPlayerData);
|
server.AddComputerPlayer(tmpPlayerData);
|
||||||
|
|
||||||
// Send "Player Joined" to other fully connected clients.
|
// Send "Player Joined" to other fully connected clients.
|
||||||
server.SendToAllPlayers(CreateNetPacketPlayerJoined(server.GetId(), *tmpPlayerData), SessionData::Game | SessionData::Spectating);
|
server.SendToAllPlayers(CreateNetPacketPlayerJoined(server.GetId(), *tmpPlayerData), SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
|
|
||||||
// Notify lobby.
|
// Notify lobby.
|
||||||
server.GetLobbyThread().NotifyPlayerJoinedGame(server.GetId(), tmpPlayerData->GetUniqueId());
|
server.GetLobbyThread().NotifyPlayerJoinedGame(server.GetId(), tmpPlayerData->GetUniqueId());
|
||||||
@@ -1420,7 +1420,7 @@ ServerGameStateHand::PerformRejoin(boost::shared_ptr<ServerGame> server, boost::
|
|||||||
PlayerIdChangedMessage *netIdChanged = packet->GetMsg()->mutable_playeridchangedmessage();
|
PlayerIdChangedMessage *netIdChanged = packet->GetMsg()->mutable_playeridchangedmessage();
|
||||||
netIdChanged->set_oldplayerid(rejoinPlayer->getMyUniqueID());
|
netIdChanged->set_oldplayerid(rejoinPlayer->getMyUniqueID());
|
||||||
netIdChanged->set_newplayerid(session->GetPlayerData()->GetUniqueId());
|
netIdChanged->set_newplayerid(session->GetPlayerData()->GetUniqueId());
|
||||||
server->SendToAllButOnePlayers(packet, session->GetId(), SessionData::Game | SessionData::Spectating);
|
server->SendToAllButOnePlayers(packet, session->GetId(), SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
|
|
||||||
// Update the dealer, if necessary.
|
// Update the dealer, if necessary.
|
||||||
curGame.replaceDealer(rejoinPlayer->getMyUniqueID(), session->GetPlayerData()->GetUniqueId());
|
curGame.replaceDealer(rejoinPlayer->getMyUniqueID(), session->GetPlayerData()->GetUniqueId());
|
||||||
|
|||||||
@@ -390,12 +390,12 @@ ServerLobbyThread::CloseSession(boost::shared_ptr<SessionData> session)
|
|||||||
if (session && session->GetState() != SessionData::Closed) { // Make this call reentrant.
|
if (session && session->GetState() != SessionData::Closed) { // Make this call reentrant.
|
||||||
LOG_VERBOSE("Closing session #" << session->GetId() << ".");
|
LOG_VERBOSE("Closing session #" << session->GetId() << ".");
|
||||||
|
|
||||||
session->SetState(SessionData::Closed);
|
|
||||||
|
|
||||||
boost::shared_ptr<ServerGame> tmpGame = session->GetGame();
|
boost::shared_ptr<ServerGame> tmpGame = session->GetGame();
|
||||||
if (tmpGame) {
|
if (tmpGame) {
|
||||||
tmpGame->RemoveSession(session, NTF_NET_INTERNAL);
|
tmpGame->RemoveSession(session, NTF_NET_INTERNAL);
|
||||||
}
|
}
|
||||||
|
session->SetGame(boost::shared_ptr<ServerGame>());
|
||||||
|
session->SetState(SessionData::Closed);
|
||||||
|
|
||||||
m_sessionManager.RemoveSession(session->GetId());
|
m_sessionManager.RemoveSession(session->GetId());
|
||||||
m_gameSessionManager.RemoveSession(session->GetId());
|
m_gameSessionManager.RemoveSession(session->GetId());
|
||||||
@@ -404,7 +404,7 @@ ServerLobbyThread::CloseSession(boost::shared_ptr<SessionData> session)
|
|||||||
NotifyPlayerLeftLobby(session->GetPlayerData()->GetUniqueId());
|
NotifyPlayerLeftLobby(session->GetPlayerData()->GetUniqueId());
|
||||||
// Update stats (if needed).
|
// Update stats (if needed).
|
||||||
UpdateStatisticsNumberOfPlayers();
|
UpdateStatisticsNumberOfPlayers();
|
||||||
session->SetGame(boost::shared_ptr<ServerGame>());
|
|
||||||
// Ignore error when shutting down the socket.
|
// Ignore error when shutting down the socket.
|
||||||
boost::system::error_code ec;
|
boost::system::error_code ec;
|
||||||
session->GetAsioSocket()->shutdown(boost::asio::ip::tcp::socket::shutdown_receive, ec);
|
session->GetAsioSocket()->shutdown(boost::asio::ip::tcp::socket::shutdown_receive, ec);
|
||||||
@@ -426,7 +426,7 @@ ServerLobbyThread::NotifyPlayerJoinedLobby(unsigned playerId)
|
|||||||
{
|
{
|
||||||
boost::shared_ptr<NetPacket> notify = CreateNetPacketPlayerListNew(playerId);
|
boost::shared_ptr<NetPacket> notify = CreateNetPacketPlayerListNew(playerId);
|
||||||
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Established);
|
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Established);
|
||||||
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -434,7 +434,7 @@ ServerLobbyThread::NotifyPlayerLeftLobby(unsigned playerId)
|
|||||||
{
|
{
|
||||||
boost::shared_ptr<NetPacket> notify = CreateNetPacketPlayerListLeft(playerId);
|
boost::shared_ptr<NetPacket> notify = CreateNetPacketPlayerListLeft(playerId);
|
||||||
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Established);
|
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Established);
|
||||||
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -448,7 +448,7 @@ ServerLobbyThread::NotifyPlayerJoinedGame(unsigned gameId, unsigned playerId)
|
|||||||
netListMsg->set_playerid(playerId);
|
netListMsg->set_playerid(playerId);
|
||||||
|
|
||||||
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
||||||
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -462,7 +462,7 @@ ServerLobbyThread::NotifyPlayerLeftGame(unsigned gameId, unsigned playerId)
|
|||||||
netListMsg->set_playerid(playerId);
|
netListMsg->set_playerid(playerId);
|
||||||
|
|
||||||
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
||||||
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -476,7 +476,7 @@ ServerLobbyThread::NotifySpectatorJoinedGame(unsigned gameId, unsigned playerId)
|
|||||||
netListMsg->set_playerid(playerId);
|
netListMsg->set_playerid(playerId);
|
||||||
|
|
||||||
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
||||||
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -490,7 +490,7 @@ ServerLobbyThread::NotifySpectatorLeftGame(unsigned gameId, unsigned playerId)
|
|||||||
netListMsg->set_playerid(playerId);
|
netListMsg->set_playerid(playerId);
|
||||||
|
|
||||||
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
||||||
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -505,7 +505,7 @@ ServerLobbyThread::NotifyGameAdminChanged(unsigned gameId, unsigned newAdminPlay
|
|||||||
netListMsg->set_newadminplayerid(newAdminPlayerId);
|
netListMsg->set_newadminplayerid(newAdminPlayerId);
|
||||||
|
|
||||||
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
||||||
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -513,7 +513,7 @@ ServerLobbyThread::NotifyStartingGame(unsigned gameId)
|
|||||||
{
|
{
|
||||||
boost::shared_ptr<NetPacket> packet = CreateNetPacketGameListUpdate(gameId, GAME_MODE_STARTED);
|
boost::shared_ptr<NetPacket> packet = CreateNetPacketGameListUpdate(gameId, GAME_MODE_STARTED);
|
||||||
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
||||||
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -521,7 +521,7 @@ ServerLobbyThread::NotifyReopeningGame(unsigned gameId)
|
|||||||
{
|
{
|
||||||
boost::shared_ptr<NetPacket> packet = CreateNetPacketGameListUpdate(gameId, GAME_MODE_CREATED);
|
boost::shared_ptr<NetPacket> packet = CreateNetPacketGameListUpdate(gameId, GAME_MODE_CREATED);
|
||||||
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
||||||
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -649,7 +649,7 @@ ServerLobbyThread::SendGlobalChat(const string &message)
|
|||||||
netChat->set_chattext(message);
|
netChat->set_chattext(message);
|
||||||
|
|
||||||
m_sessionManager.SendToAllSessions(GetSender(), packet, SessionData::Established);
|
m_sessionManager.SendToAllSessions(GetSender(), packet, SessionData::Established);
|
||||||
m_gameSessionManager.SendToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -661,7 +661,7 @@ ServerLobbyThread::SendGlobalMsgBox(const string &message)
|
|||||||
netDialog->set_notificationtext(message);
|
netDialog->set_notificationtext(message);
|
||||||
|
|
||||||
m_sessionManager.SendToAllSessions(GetSender(), packet, SessionData::Established);
|
m_sessionManager.SendToAllSessions(GetSender(), packet, SessionData::Established);
|
||||||
m_gameSessionManager.SendToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -674,7 +674,7 @@ ServerLobbyThread::SendChatBotMsg(const std::string &message)
|
|||||||
netChat->set_chattext(message);
|
netChat->set_chattext(message);
|
||||||
|
|
||||||
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
||||||
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
|
|
||||||
GetIrcBotCallback().SignalLobbyMessage(
|
GetIrcBotCallback().SignalLobbyMessage(
|
||||||
0,
|
0,
|
||||||
@@ -694,7 +694,7 @@ ServerLobbyThread::SendChatBotMsg(unsigned gameId, const std::string &message)
|
|||||||
|
|
||||||
GameMap::const_iterator pos = m_gameMap.find(gameId);
|
GameMap::const_iterator pos = m_gameMap.find(gameId);
|
||||||
if (pos != m_gameMap.end()) {
|
if (pos != m_gameMap.end()) {
|
||||||
pos->second->SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating);
|
pos->second->SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1415,7 +1415,7 @@ ServerLobbyThread::HandleNetPacketChatRequest(boost::shared_ptr<SessionData> ses
|
|||||||
netChat->set_chattext(chatMsg);
|
netChat->set_chattext(chatMsg);
|
||||||
|
|
||||||
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
||||||
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
|
|
||||||
// Send the message to the chat cleaner bot.
|
// Send the message to the chat cleaner bot.
|
||||||
m_chatCleanerManager->HandleLobbyChatText(
|
m_chatCleanerManager->HandleLobbyChatText(
|
||||||
@@ -1481,7 +1481,7 @@ ServerLobbyThread::HandleNetPacketRejectGameInvitation(boost::shared_ptr<Session
|
|||||||
netReject->set_playerid(tmpPlayerId);
|
netReject->set_playerid(tmpPlayerId);
|
||||||
netReject->set_playerrejectreason(reject.myrejectreason());
|
netReject->set_playerrejectreason(reject.myrejectreason());
|
||||||
|
|
||||||
game.SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating);
|
game.SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1827,7 +1827,7 @@ ServerLobbyThread::TimerRemoveGame(const boost::system::error_code &ec)
|
|||||||
GameMap::iterator next = i;
|
GameMap::iterator next = i;
|
||||||
++next;
|
++next;
|
||||||
boost::shared_ptr<ServerGame> tmpGame = i->second;
|
boost::shared_ptr<ServerGame> tmpGame = i->second;
|
||||||
if (!tmpGame->GetSessionManager().HasSessions())
|
if (!tmpGame->GetSessionManager().HasSessionWithState(SessionData::Game))
|
||||||
InternalRemoveGame(tmpGame); // This will delete the game.
|
InternalRemoveGame(tmpGame); // This will delete the game.
|
||||||
i = next;
|
i = next;
|
||||||
}
|
}
|
||||||
@@ -1902,7 +1902,7 @@ ServerLobbyThread::InternalAddGame(boost::shared_ptr<ServerGame> game)
|
|||||||
m_gameMap.insert(GameMap::value_type(game->GetId(), game));
|
m_gameMap.insert(GameMap::value_type(game->GetId(), game));
|
||||||
// Notify all players.
|
// Notify all players.
|
||||||
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), CreateNetPacketGameListNew(*game), SessionData::Established);
|
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), CreateNetPacketGameListNew(*game), SessionData::Established);
|
||||||
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), CreateNetPacketGameListNew(*game), SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), CreateNetPacketGameListNew(*game), SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
|
|
||||||
{
|
{
|
||||||
boost::mutex::scoped_lock lock(m_statMutex);
|
boost::mutex::scoped_lock lock(m_statMutex);
|
||||||
@@ -1934,7 +1934,7 @@ ServerLobbyThread::InternalRemoveGame(boost::shared_ptr<ServerGame> game)
|
|||||||
// Notify all players.
|
// Notify all players.
|
||||||
boost::shared_ptr<NetPacket> packet = CreateNetPacketGameListUpdate(game->GetId(), GAME_MODE_CLOSED);
|
boost::shared_ptr<NetPacket> packet = CreateNetPacketGameListUpdate(game->GetId(), GAME_MODE_CLOSED);
|
||||||
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
||||||
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -2098,7 +2098,7 @@ ServerLobbyThread::SendPlayerList(boost::shared_ptr<SessionData> s)
|
|||||||
{
|
{
|
||||||
// Retrieve all player ids.
|
// Retrieve all player ids.
|
||||||
PlayerIdList idList(m_sessionManager.GetPlayerIdList(SessionData::Established));
|
PlayerIdList idList(m_sessionManager.GetPlayerIdList(SessionData::Established));
|
||||||
PlayerIdList gameIdList(m_gameSessionManager.GetPlayerIdList(SessionData::Game | SessionData::Spectating));
|
PlayerIdList gameIdList(m_gameSessionManager.GetPlayerIdList(SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting));
|
||||||
idList.splice(idList.begin(), gameIdList);
|
idList.splice(idList.begin(), gameIdList);
|
||||||
// Send all player ids to client.
|
// Send all player ids to client.
|
||||||
PlayerIdList::const_iterator i = idList.begin();
|
PlayerIdList::const_iterator i = idList.begin();
|
||||||
@@ -2152,7 +2152,7 @@ ServerLobbyThread::BroadcastStatisticsUpdate(const ServerStats &stats)
|
|||||||
data->set_statisticsvalue(m_sessionManager.GetRawSessionCount() + m_gameSessionManager.GetRawSessionCount());
|
data->set_statisticsvalue(m_sessionManager.GetRawSessionCount() + m_gameSessionManager.GetRawSessionCount());
|
||||||
|
|
||||||
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established);
|
||||||
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating);
|
m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,13 +46,6 @@ SessionManager::~SessionManager()
|
|||||||
Clear();
|
Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
|
||||||
SessionManager::HasSessions() const
|
|
||||||
{
|
|
||||||
boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex);
|
|
||||||
return !m_sessionMap.empty();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SessionManager::AddSession(boost::shared_ptr<SessionData> session)
|
SessionManager::AddSession(boost::shared_ptr<SessionData> session)
|
||||||
{
|
{
|
||||||
@@ -295,14 +288,14 @@ SessionManager::Clear()
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsigned
|
unsigned
|
||||||
SessionManager::GetRawSessionCount()
|
SessionManager::GetRawSessionCount() const
|
||||||
{
|
{
|
||||||
boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex);
|
boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex);
|
||||||
return (unsigned)m_sessionMap.size();
|
return (unsigned)m_sessionMap.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned
|
unsigned
|
||||||
SessionManager::GetSessionCountWithState(int state)
|
SessionManager::GetSessionCountWithState(int state) const
|
||||||
{
|
{
|
||||||
unsigned counter = 0;
|
unsigned counter = 0;
|
||||||
boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex);
|
boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex);
|
||||||
@@ -318,6 +311,25 @@ SessionManager::GetSessionCountWithState(int state)
|
|||||||
return counter;
|
return counter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
SessionManager::HasSessionWithState(int state) const
|
||||||
|
{
|
||||||
|
bool retVal = false;
|
||||||
|
boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex);
|
||||||
|
|
||||||
|
SessionMap::const_iterator i = m_sessionMap.begin();
|
||||||
|
SessionMap::const_iterator end = m_sessionMap.end();
|
||||||
|
|
||||||
|
while (i != end) {
|
||||||
|
if ((i->second->GetState() & state) != 0) {
|
||||||
|
retVal = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
SessionManager::SendToAllSessions(SenderHelper &sender, boost::shared_ptr<NetPacket> packet, int state)
|
SessionManager::SendToAllSessions(SenderHelper &sender, boost::shared_ptr<NetPacket> packet, int state)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ class ServerGame;
|
|||||||
class SessionData : public boost::enable_shared_from_this<SessionData>
|
class SessionData : public boost::enable_shared_from_this<SessionData>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum State { Init = 1, ReceivingAvatar = 2, Established = 4, Game = 8, Spectating = 16, GameWaiting = 32, SpectatorWaiting = 64, Closed = 128 };
|
enum State { Init = 1, ReceivingAvatar = 2, Established = 4, Game = 8, Spectating = 16, SpectatorWaiting = 32, Closed = 128 };
|
||||||
|
|
||||||
SessionData(boost::shared_ptr<boost::asio::ip::tcp::socket> sock, SessionId id, SessionDataCallback &cb, boost::asio::io_service &ioService);
|
SessionData(boost::shared_ptr<boost::asio::ip::tcp::socket> sock, SessionId id, SessionDataCallback &cb, boost::asio::io_service &ioService);
|
||||||
~SessionData();
|
~SessionData();
|
||||||
|
|||||||
@@ -50,8 +50,6 @@ public:
|
|||||||
SessionManager();
|
SessionManager();
|
||||||
virtual ~SessionManager();
|
virtual ~SessionManager();
|
||||||
|
|
||||||
bool HasSessions() const;
|
|
||||||
|
|
||||||
void AddSession(boost::shared_ptr<SessionData> sessionData);
|
void AddSession(boost::shared_ptr<SessionData> sessionData);
|
||||||
void SetSessionPlayerData(SessionId session, boost::shared_ptr<PlayerData> playerData);
|
void SetSessionPlayerData(SessionId session, boost::shared_ptr<PlayerData> playerData);
|
||||||
bool RemoveSession(SessionId session);
|
bool RemoveSession(SessionId session);
|
||||||
@@ -72,8 +70,9 @@ public:
|
|||||||
void ResetAllReadyFlags();
|
void ResetAllReadyFlags();
|
||||||
|
|
||||||
void Clear();
|
void Clear();
|
||||||
unsigned GetRawSessionCount();
|
unsigned GetRawSessionCount() const;
|
||||||
unsigned GetSessionCountWithState(int state);
|
unsigned GetSessionCountWithState(int state) const;
|
||||||
|
bool HasSessionWithState(int state) const;
|
||||||
|
|
||||||
void SendToAllSessions(SenderHelper &sender, boost::shared_ptr<NetPacket> packet, int state);
|
void SendToAllSessions(SenderHelper &sender, boost::shared_ptr<NetPacket> packet, int state);
|
||||||
void SendLobbyMsgToAllSessions(SenderHelper &sender, boost::shared_ptr<NetPacket> packet, int state);
|
void SendLobbyMsgToAllSessions(SenderHelper &sender, boost::shared_ptr<NetPacket> packet, int state);
|
||||||
|
|||||||
Reference in New Issue
Block a user