Multiple player info requests can be placed in one packet.

This commit is contained in:
lotodore
2012-09-24 12:22:13 +02:00
parent f0ee0af6ec
commit 02016381ef
9 changed files with 1078 additions and 991 deletions
+1 -1
View File
@@ -232,7 +232,7 @@ message GameListAdminChangedMessage {
}
message PlayerInfoRequestMessage {
required uint32 playerId = 1;
repeated uint32 playerId = 1 [packed = true];
}
message PlayerInfoReplyMessage {
+1
View File
@@ -139,6 +139,7 @@ protected:
bool GetCachedPlayerInfo(unsigned id, PlayerInfo &info) const;
void RequestPlayerInfo(unsigned id, bool requestAvatar = false);
void RequestPlayerInfo(const std::list<unsigned> &idList, bool requestAvatar = false);
void SetPlayerInfo(unsigned id, const PlayerInfo &info);
void SetUnknownPlayer(unsigned id);
void SetNewGameAdmin(unsigned id);
+5 -2
View File
@@ -677,15 +677,18 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr<ClientThread> clien
unsigned numPlayers = netListNew.playerids_size();
// Request player info for players if needed.
GameInfo tmpInfo;
list<unsigned> requestList;
for (unsigned i = 0; i < numPlayers; i++) {
PlayerInfo info;
unsigned playerId = netListNew.playerids(i);
if (!client->GetCachedPlayerInfo(playerId, info)) {
// Request player info.
client->RequestPlayerInfo(playerId);
requestList.push_back(playerId);
}
tmpInfo.players.push_back(playerId);
}
// Send request for multiple players (will only act if list is non-empty).
client->RequestPlayerInfo(requestList);
tmpInfo.adminPlayerId = netListNew.adminplayerid();
tmpInfo.isPasswordProtected = netListNew.isprivate();
tmpInfo.mode = static_cast<GameMode>(netListNew.gamemode());
+22 -11
View File
@@ -34,6 +34,7 @@
#include <qttoolsinterface.h>
#include <boost/lambda/lambda.hpp>
#include <boost/foreach.hpp>
#include <boost/filesystem.hpp>
#include <sstream>
#include <fstream>
@@ -644,19 +645,29 @@ ClientThread::GetCachedPlayerInfo(unsigned id, PlayerInfo &info) const
void
ClientThread::RequestPlayerInfo(unsigned id, bool requestAvatar)
{
if (find(m_playerInfoRequestList.begin(), m_playerInfoRequestList.end(), id) == m_playerInfoRequestList.end()) {
boost::shared_ptr<NetPacket> packet(new NetPacket);
packet->GetMsg()->set_messagetype(PokerTHMessage::Type_PlayerInfoRequestMessage);
PlayerInfoRequestMessage *netPlayerInfo = packet->GetMsg()->mutable_playerinforequestmessage();
netPlayerInfo->set_playerid(id);
GetSender().Send(GetContext().GetSessionData(), packet);
m_playerInfoRequestList.push_back(id);
list<unsigned> idList;
idList.push_back(id);
RequestPlayerInfo(idList, requestAvatar);
}
void
ClientThread::RequestPlayerInfo(const list<unsigned> &idList, bool requestAvatar)
{
boost::shared_ptr<NetPacket> packet(new NetPacket);
packet->GetMsg()->set_messagetype(PokerTHMessage::Type_PlayerInfoRequestMessage);
PlayerInfoRequestMessage *netPlayerInfo = packet->GetMsg()->mutable_playerinforequestmessage();
BOOST_FOREACH(unsigned playerId, idList) {
if (find(m_playerInfoRequestList.begin(), m_playerInfoRequestList.end(), playerId) == m_playerInfoRequestList.end()) {
netPlayerInfo->add_playerid(playerId);
m_playerInfoRequestList.push_back(playerId);
}
// Remember that we have to request an avatar.
if (requestAvatar) {
m_avatarShouldRequestList.push_back(playerId);
}
}
// Remember that we have to request an avatar.
if (requestAvatar) {
m_avatarShouldRequestList.push_back(id);
if (netPlayerInfo->playerid_size() > 0) {
GetSender().Send(GetContext().GetSessionData(), packet);
}
}
+40 -38
View File
@@ -1144,47 +1144,49 @@ ServerLobbyThread::HandleNetPacketAvatarEnd(boost::shared_ptr<SessionData> sessi
void
ServerLobbyThread::HandleNetPacketRetrievePlayerInfo(boost::shared_ptr<SessionData> session, const PlayerInfoRequestMessage &playerInfoRequest)
{
// Find player in lobby or in a game.
boost::shared_ptr<SessionData> tmpSession = m_sessionManager.GetSessionByUniquePlayerId(playerInfoRequest.playerid());
if (!tmpSession) {
tmpSession = m_gameSessionManager.GetSessionByUniquePlayerId(playerInfoRequest.playerid());
}
boost::shared_ptr<PlayerData> tmpPlayer;
if (tmpSession) {
tmpPlayer = tmpSession->GetPlayerData();
}
if (!tmpPlayer) {
boost::mutex::scoped_lock lock(m_computerPlayersMutex);
PlayerDataMap::const_iterator pos = m_computerPlayers.find(playerInfoRequest.playerid());
if (pos != m_computerPlayers.end())
tmpPlayer = pos->second;
}
boost::shared_ptr<NetPacket> packet(new NetPacket);
packet->GetMsg()->set_messagetype(PokerTHMessage::Type_PlayerInfoReplyMessage);
PlayerInfoReplyMessage *netPlayerInfoReply = packet->GetMsg()->mutable_playerinforeplymessage();
netPlayerInfoReply->set_playerid(playerInfoRequest.playerid());
if (tmpPlayer) {
// Send player info to client.
PlayerInfoReplyMessage::PlayerInfoData *data = netPlayerInfoReply->mutable_playerinfodata();
data->set_playername(tmpPlayer->GetName());
data->set_ishuman(tmpPlayer->GetType() == PLAYER_TYPE_HUMAN);
data->set_playerrights(static_cast<NetPlayerInfoRights>(tmpPlayer->GetRights()));
if (!tmpPlayer->GetCountry().empty()) {
data->set_countrycode(tmpPlayer->GetCountry());
BOOST_FOREACH(unsigned playerId, playerInfoRequest.playerid()) {
// Find player in lobby or in a game.
boost::shared_ptr<SessionData> tmpSession = m_sessionManager.GetSessionByUniquePlayerId(playerId);
if (!tmpSession) {
tmpSession = m_gameSessionManager.GetSessionByUniquePlayerId(playerId);
}
if (!tmpPlayer->GetAvatarMD5().IsZero()) {
PlayerInfoReplyMessage::PlayerInfoData::AvatarData *avatarData = data->mutable_avatardata();
avatarData->set_avatartype(static_cast<NetAvatarType>(AvatarManager::GetAvatarFileType(tmpPlayer->GetAvatarFile())));
avatarData->set_avatarhash(tmpPlayer->GetAvatarMD5().GetData(), MD5_DATA_SIZE);
boost::shared_ptr<PlayerData> tmpPlayer;
if (tmpSession) {
tmpPlayer = tmpSession->GetPlayerData();
}
} else {
// Unknown player id - do not set any data.
if (!tmpPlayer) {
boost::mutex::scoped_lock lock(m_computerPlayersMutex);
PlayerDataMap::const_iterator pos = m_computerPlayers.find(playerId);
if (pos != m_computerPlayers.end())
tmpPlayer = pos->second;
}
boost::shared_ptr<NetPacket> packet(new NetPacket);
packet->GetMsg()->set_messagetype(PokerTHMessage::Type_PlayerInfoReplyMessage);
PlayerInfoReplyMessage *netPlayerInfoReply = packet->GetMsg()->mutable_playerinforeplymessage();
netPlayerInfoReply->set_playerid(playerId);
if (tmpPlayer) {
// Send player info to client.
PlayerInfoReplyMessage::PlayerInfoData *data = netPlayerInfoReply->mutable_playerinfodata();
data->set_playername(tmpPlayer->GetName());
data->set_ishuman(tmpPlayer->GetType() == PLAYER_TYPE_HUMAN);
data->set_playerrights(static_cast<NetPlayerInfoRights>(tmpPlayer->GetRights()));
if (!tmpPlayer->GetCountry().empty()) {
data->set_countrycode(tmpPlayer->GetCountry());
}
if (!tmpPlayer->GetAvatarMD5().IsZero()) {
PlayerInfoReplyMessage::PlayerInfoData::AvatarData *avatarData = data->mutable_avatardata();
avatarData->set_avatartype(static_cast<NetAvatarType>(AvatarManager::GetAvatarFileType(tmpPlayer->GetAvatarFile())));
avatarData->set_avatarhash(tmpPlayer->GetAvatarMD5().GetData(), MD5_DATA_SIZE);
}
} else {
// Unknown player id - do not set any data.
}
GetSender().Send(session, packet);
}
GetSender().Send(session, packet);
}
void
+425 -411
View File
@@ -2224,385 +2224,385 @@ void protobuf_AddDesc_pokerth_2eproto() {
"\002 \002(\r\"=\n\031GameListPlayerLeftMessage\022\016\n\006ga"
"meId\030\001 \002(\r\022\020\n\010playerId\030\002 \002(\r\"G\n\033GameList"
"AdminChangedMessage\022\016\n\006gameId\030\001 \002(\r\022\030\n\020n"
"ewAdminPlayerId\030\002 \002(\r\",\n\030PlayerInfoReque"
"stMessage\022\020\n\010playerId\030\001 \002(\r\"\360\002\n\026PlayerIn"
"foReplyMessage\022\020\n\010playerId\030\001 \002(\r\022>\n\016play"
"erInfoData\030\002 \001(\0132&.PlayerInfoReplyMessag"
"e.PlayerInfoData\032\203\002\n\016PlayerInfoData\022\022\n\np"
"layerName\030\001 \002(\t\022\017\n\007isHuman\030\002 \002(\010\022*\n\014play"
"erRights\030\003 \002(\0162\024.NetPlayerInfoRights\022\023\n\013"
"countryCode\030\004 \001(\t\022E\n\navatarData\030\005 \001(\01321."
"PlayerInfoReplyMessage.PlayerInfoData.Av"
"atarData\032D\n\nAvatarData\022\"\n\navatarType\030\001 \002"
"(\0162\016.NetAvatarType\022\022\n\navatarHash\030\002 \002(\014\"\260"
"\001\n\032SubscriptionRequestMessage\022J\n\022subscri"
"ptionAction\030\001 \002(\0162..SubscriptionRequestM"
"essage.SubscriptionAction\"F\n\022Subscriptio"
"nAction\022\027\n\023unsubscribeGameList\020\001\022\027\n\023resu"
"bscribeGameList\020\002\"N\n\027JoinExistingGameMes"
"sage\022\016\n\006gameId\030\001 \002(\r\022\020\n\010password\030\002 \001(\t\022\021"
"\n\tautoLeave\030\003 \001(\010\"Y\n\022JoinNewGameMessage\022"
"\036\n\010gameInfo\030\001 \002(\0132\014.NetGameInfo\022\020\n\010passw"
"ord\030\002 \001(\t\022\021\n\tautoLeave\030\003 \001(\010\">\n\031RejoinEx"
"istingGameMessage\022\016\n\006gameId\030\001 \002(\r\022\021\n\taut"
"oLeave\030\002 \001(\010\"]\n\022JoinGameAckMessage\022\016\n\006ga"
"meId\030\001 \002(\r\022\027\n\017areYouGameAdmin\030\002 \002(\010\022\036\n\010g"
"ameInfo\030\003 \002(\0132\014.NetGameInfo\"\337\002\n\025JoinGame"
"FailedMessage\022\016\n\006gameId\030\001 \002(\r\022K\n\025joinGam"
"eFailureReason\030\002 \002(\0162,.JoinGameFailedMes"
"sage.JoinGameFailureReason\"\350\001\n\025JoinGameF"
"ailureReason\022\017\n\013invalidGame\020\001\022\016\n\ngameIsF"
"ull\020\002\022\021\n\rgameIsRunning\020\003\022\023\n\017invalidPassw"
"ord\020\004\022\025\n\021notAllowedAsGuest\020\005\022\016\n\nnotInvit"
"ed\020\006\022\021\n\rgameNameInUse\020\007\022\017\n\013badGameName\020\010"
"\022\023\n\017invalidSettings\020\t\022\024\n\020ipAddressBlocke"
"d\020\n\022\020\n\014rejoinFailed\020\013\"P\n\027GamePlayerJoine"
"dMessage\022\016\n\006gameId\030\001 \002(\r\022\020\n\010playerId\030\002 \002"
"(\r\022\023\n\013isGameAdmin\030\003 \002(\010\"\316\001\n\025GamePlayerLe"
"ftMessage\022\016\n\006gameId\030\001 \002(\r\022\020\n\010playerId\030\002 "
"\002(\r\022I\n\024gamePlayerLeftReason\030\003 \002(\0162+.Game"
"PlayerLeftMessage.GamePlayerLeftReason\"H"
"\n\024GamePlayerLeftReason\022\021\n\rleftOnRequest\020"
"\000\022\016\n\nleftKicked\020\001\022\r\n\tleftError\020\002\"C\n\027Game"
"AdminChangedMessage\022\016\n\006gameId\030\001 \002(\r\022\030\n\020n"
"ewAdminPlayerId\030\002 \002(\r\"\206\002\n\026RemovedFromGam"
"eMessage\022\016\n\006gameId\030\001 \002(\r\022L\n\025removedFromG"
"ameReason\030\002 \002(\0162-.RemovedFromGameMessage"
".RemovedFromGameReason\"\215\001\n\025RemovedFromGa"
"meReason\022\024\n\020removedOnRequest\020\000\022\022\n\016kicked"
"FromGame\020\001\022\016\n\ngameIsFull\020\002\022\021\n\rgameIsRunn"
"ing\020\003\022\017\n\013gameTimeout\020\004\022\026\n\022removedStartFa"
"iled\020\005\"<\n\030KickPlayerRequestMessage\022\016\n\006ga"
"meId\030\001 \002(\r\022\020\n\010playerId\030\002 \002(\r\")\n\027LeaveGam"
"eRequestMessage\022\016\n\006gameId\030\001 \002(\r\"=\n\031Invit"
"ePlayerToGameMessage\022\016\n\006gameId\030\001 \002(\r\022\020\n\010"
"playerId\030\002 \002(\r\"R\n\023InviteNotifyMessage\022\016\n"
"\006gameId\030\001 \002(\r\022\023\n\013playerIdWho\030\002 \002(\r\022\026\n\016pl"
"ayerIdByWhom\030\003 \002(\r\"\270\001\n\033RejectGameInvitat"
"ionMessage\022\016\n\006gameId\030\001 \002(\r\022H\n\016myRejectRe"
"ason\030\002 \002(\01620.RejectGameInvitationMessage"
".RejectGameInvReason\"\?\n\023RejectGameInvRea"
"son\022\022\n\016rejectReasonNo\020\000\022\024\n\020rejectReasonB"
"usy\020\001\"\210\001\n\026RejectInvNotifyMessage\022\016\n\006game"
"Id\030\001 \002(\r\022\020\n\010playerId\030\002 \002(\r\022L\n\022playerReje"
"ctReason\030\003 \002(\01620.RejectGameInvitationMes"
"sage.RejectGameInvReason\"\262\001\n\021StartEventM"
"essage\022\016\n\006gameId\030\001 \002(\r\0229\n\016startEventType"
"\030\002 \002(\0162!.StartEventMessage.StartEventTyp"
"e\022\037\n\027fillWithComputerPlayers\030\003 \001(\010\"1\n\016St"
"artEventType\022\016\n\nstartEvent\020\000\022\017\n\013rejoinEv"
"ent\020\001\"&\n\024StartEventAckMessage\022\016\n\006gameId\030"
"\001 \002(\r\"_\n\027GameStartInitialMessage\022\016\n\006game"
"Id\030\001 \002(\r\022\033\n\023startDealerPlayerId\030\002 \002(\r\022\027\n"
"\013playerSeats\030\003 \003(\rB\002\020\001\"\325\001\n\026GameStartRejo"
"inMessage\022\016\n\006gameId\030\001 \002(\r\022\033\n\023startDealer"
"PlayerId\030\002 \002(\r\022\017\n\007handNum\030\003 \002(\r\022B\n\020rejoi"
"nPlayerData\030\004 \003(\0132(.GameStartRejoinMessa"
"ge.RejoinPlayerData\0329\n\020RejoinPlayerData\022"
"\020\n\010playerId\030\001 \002(\r\022\023\n\013playerMoney\030\002 \002(\r\"\333"
"\001\n\020HandStartMessage\022\016\n\006gameId\030\001 \002(\r\0220\n\np"
"lainCards\030\002 \001(\0132\034.HandStartMessage.Plain"
"Cards\022\026\n\016encryptedCards\030\003 \001(\014\022\022\n\nsmallBl"
"ind\030\004 \002(\r\022#\n\nseatStates\030\005 \003(\0162\017.NetPlaye"
"rState\0324\n\nPlainCards\022\022\n\nplainCard1\030\001 \002(\r"
"\022\022\n\nplainCard2\030\002 \002(\r\"X\n\022PlayersTurnMessa"
"ge\022\016\n\006gameId\030\001 \002(\r\022\020\n\010playerId\030\002 \002(\r\022 \n\t"
"gameState\030\003 \002(\0162\r.NetGameState\"\226\001\n\026MyAct"
"ionRequestMessage\022\016\n\006gameId\030\001 \002(\r\022\017\n\007han"
"dNum\030\002 \002(\r\022 \n\tgameState\030\003 \002(\0162\r.NetGameS"
"tate\022\"\n\010myAction\030\004 \002(\0162\020.NetPlayerAction"
"\022\025\n\rmyRelativeBet\030\005 \002(\r\"\271\002\n\031YourActionRe"
"jectedMessage\022\016\n\006gameId\030\001 \002(\r\022 \n\tgameSta"
"te\030\002 \002(\0162\r.NetGameState\022$\n\nyourAction\030\003 "
"\002(\0162\020.NetPlayerAction\022\027\n\017yourRelativeBet"
"\030\004 \002(\r\022C\n\017rejectionReason\030\005 \002(\0162*.YourAc"
"tionRejectedMessage.RejectionReason\"f\n\017R"
"ejectionReason\022\034\n\030rejectedInvalidGameSta"
"te\020\001\022\027\n\023rejectedNotYourTurn\020\002\022\034\n\030rejecte"
"dActionNotAllowed\020\003\"\335\001\n\030PlayersActionDon"
"eMessage\022\016\n\006gameId\030\001 \002(\r\022\020\n\010playerId\030\002 \002"
"(\r\022 \n\tgameState\030\003 \002(\0162\r.NetGameState\022&\n\014"
"playerAction\030\004 \002(\0162\020.NetPlayerAction\022\026\n\016"
"totalPlayerBet\030\005 \002(\r\022\023\n\013playerMoney\030\006 \002("
"\r\022\022\n\nhighestSet\030\007 \002(\r\022\024\n\014minimumRaise\030\010 "
"\002(\r\"_\n\024DealFlopCardsMessage\022\016\n\006gameId\030\001 "
"\002(\r\022\021\n\tflopCard1\030\002 \002(\r\022\021\n\tflopCard2\030\003 \002("
"\r\022\021\n\tflopCard3\030\004 \002(\r\"7\n\023DealTurnCardMess"
"age\022\016\n\006gameId\030\001 \002(\r\022\020\n\010turnCard\030\002 \002(\r\"9\n"
"\024DealRiverCardMessage\022\016\n\006gameId\030\001 \002(\r\022\021\n"
"\triverCard\030\002 \002(\r\"\252\001\n\025AllInShowCardsMessa"
"ge\022\016\n\006gameId\030\001 \002(\r\0228\n\014playersAllIn\030\002 \003(\013"
"2\".AllInShowCardsMessage.PlayerAllIn\032G\n\013"
"PlayerAllIn\022\020\n\010playerId\030\001 \002(\r\022\022\n\nallInCa"
"rd1\030\002 \002(\r\022\022\n\nallInCard2\030\003 \002(\r\"Q\n\031EndOfHa"
"ndShowCardsMessage\022\016\n\006gameId\030\001 \002(\r\022$\n\rpl"
"ayerResults\030\002 \003(\0132\r.PlayerResult\"d\n\031EndO"
"fHandHideCardsMessage\022\016\n\006gameId\030\001 \002(\r\022\020\n"
"\010playerId\030\002 \002(\r\022\020\n\010moneyWon\030\003 \002(\r\022\023\n\013pla"
"yerMoney\030\004 \002(\r\"\033\n\031ShowMyCardsRequestMess"
"age\"@\n\031AfterHandShowCardsMessage\022#\n\014play"
"erResult\030\001 \002(\0132\r.PlayerResult\":\n\020EndOfGa"
"meMessage\022\016\n\006gameId\030\001 \002(\r\022\026\n\016winnerPlaye"
"rId\030\002 \002(\r\"B\n\026PlayerIdChangedMessage\022\023\n\013o"
"ldPlayerId\030\001 \002(\r\022\023\n\013newPlayerId\030\002 \002(\r\"8\n"
"\024AskKickPlayerMessage\022\016\n\006gameId\030\001 \002(\r\022\020\n"
"\010playerId\030\002 \002(\r\"\247\002\n\024AskKickDeniedMessage"
"\022\016\n\006gameId\030\001 \002(\r\022\020\n\010playerId\030\002 \002(\r\022@\n\020ki"
"ckDeniedReason\030\003 \002(\0162&.AskKickDeniedMess"
"age.KickDeniedReason\"\252\001\n\020KickDeniedReaso"
"n\022\036\n\032kickDeniedInvalidGameState\020\000\022\031\n\025kic"
"kDeniedNotPossible\020\001\022\033\n\027kickDeniedTryAga"
"inLater\020\002\022\037\n\033kickDeniedAlreadyInProgress"
"\020\003\022\035\n\031kickDeniedInvalidPlayerId\020\004\"\245\001\n\030St"
"artKickPetitionMessage\022\016\n\006gameId\030\001 \002(\r\022\022"
"\n\npetitionId\030\002 \002(\r\022\031\n\021proposingPlayerId\030"
"\003 \002(\r\022\024\n\014kickPlayerId\030\004 \002(\r\022\026\n\016kickTimeo"
"utSec\030\005 \002(\r\022\034\n\024numVotesNeededToKick\030\006 \002("
"\r\"N\n\026VoteKickRequestMessage\022\016\n\006gameId\030\001 "
"\002(\r\022\022\n\npetitionId\030\002 \002(\r\022\020\n\010voteKick\030\003 \002("
"\010\"\337\001\n\024VoteKickReplyMessage\022\016\n\006gameId\030\001 \002"
"(\r\022\022\n\npetitionId\030\002 \002(\r\022B\n\021voteKickReplyT"
"ype\030\003 \002(\0162\'.VoteKickReplyMessage.VoteKic"
"kReplyType\"_\n\021VoteKickReplyType\022\017\n\013voteK"
"ickAck\020\000\022\031\n\025voteKickDeniedInvalid\020\001\022\036\n\032v"
"oteKickDeniedAlreadyVoted\020\002\"\240\001\n\031KickPeti"
"tionUpdateMessage\022\016\n\006gameId\030\001 \002(\r\022\022\n\npet"
"itionId\030\002 \002(\r\022\036\n\026numVotesAgainstKicking\030"
"\003 \002(\r\022!\n\031numVotesInFavourOfKicking\030\004 \002(\r"
"\022\034\n\024numVotesNeededToKick\030\005 \002(\r\"\344\002\n\026EndKi"
"ckPetitionMessage\022\016\n\006gameId\030\001 \002(\r\022\022\n\npet"
"itionId\030\002 \002(\r\022\036\n\026numVotesAgainstKicking\030"
"\003 \002(\r\022!\n\031numVotesInFavourOfKicking\030\004 \002(\r"
"\022\032\n\022resultPlayerKicked\030\005 \002(\r\022D\n\021petition"
"EndReason\030\006 \002(\0162).EndKickPetitionMessage"
".PetitionEndReason\"\200\001\n\021PetitionEndReason"
"\022\032\n\026petitionEndEnoughVotes\020\000\022\034\n\030petition"
"EndTooFewPlayers\020\001\022\031\n\025petitionEndPlayerL"
"eft\020\002\022\026\n\022petitionEndTimeout\020\003\"\357\001\n\021Statis"
"ticsMessage\0229\n\016statisticsData\030\001 \003(\0132!.St"
"atisticsMessage.StatisticsData\032\236\001\n\016Stati"
"sticsData\022H\n\016statisticsType\030\001 \002(\01620.Stat"
"isticsMessage.StatisticsData.StatisticsT"
"ype\022\027\n\017statisticsValue\030\002 \002(\r\")\n\016Statisti"
"csType\022\027\n\023statNumberOfPlayers\020\001\"T\n\022ChatR"
"equestMessage\022\024\n\014targetGameId\030\001 \001(\r\022\026\n\016t"
"argetPlayerId\030\002 \001(\r\022\020\n\010chatText\030\003 \002(\t\"\330\001"
"\n\013ChatMessage\022\016\n\006gameId\030\001 \001(\r\022\020\n\010playerI"
"d\030\002 \001(\r\022\'\n\010chatType\030\003 \002(\0162\025.ChatMessage."
"ChatType\022\020\n\010chatText\030\004 \002(\t\"l\n\010ChatType\022\021"
"\n\rchatTypeLobby\020\000\022\020\n\014chatTypeGame\020\001\022\017\n\013c"
"hatTypeBot\020\002\022\025\n\021chatTypeBroadcast\020\003\022\023\n\017c"
"hatTypePrivate\020\004\"%\n\021ChatRejectMessage\022\020\n"
"\010chatText\030\001 \002(\t\")\n\rDialogMessage\022\030\n\020noti"
"ficationText\030\001 \002(\t\"\321\001\n\025TimeoutWarningMes"
"sage\022;\n\rtimeoutReason\030\001 \002(\0162$.TimeoutWar"
"ningMessage.TimeoutReason\022\030\n\020remainingSe"
"conds\030\002 \002(\r\"a\n\rTimeoutReason\022\031\n\025timeoutN"
"oDataReceived\020\000\022\027\n\023timeoutInactiveGame\020\001"
"\022\034\n\030timeoutKickAfterAutofold\020\002\"\025\n\023ResetT"
"imeoutMessage\"K\n\023ReportAvatarMessage\022\030\n\020"
"reportedPlayerId\030\001 \002(\r\022\032\n\022reportedAvatar"
"Hash\030\002 \002(\014\"\336\001\n\026ReportAvatarAckMessage\022\030\n"
"\020reportedPlayerId\030\001 \002(\r\022F\n\022reportAvatarR"
"esult\030\002 \002(\0162*.ReportAvatarAckMessage.Rep"
"ortAvatarResult\"b\n\022ReportAvatarResult\022\030\n"
"\024avatarReportAccepted\020\000\022\031\n\025avatarReportD"
"uplicate\020\001\022\027\n\023avatarReportInvalid\020\002\"+\n\021R"
"eportGameMessage\022\026\n\016reportedGameId\030\001 \002(\r"
"\"\314\001\n\024ReportGameAckMessage\022\026\n\016reportedGam"
"eId\030\001 \002(\r\022@\n\020reportGameResult\030\002 \002(\0162&.Re"
"portGameAckMessage.ReportGameResult\"Z\n\020R"
"eportGameResult\022\026\n\022gameReportAccepted\020\000\022"
"\027\n\023gameReportDuplicate\020\001\022\025\n\021gameReportIn"
"valid\020\002\"\220\003\n\014ErrorMessage\022.\n\013errorReason\030"
"\001 \002(\0162\031.ErrorMessage.ErrorReason\"\317\002\n\013Err"
"orReason\022\014\n\010reserved\020\000\022\033\n\027initVersionNot"
"Supported\020\001\022\022\n\016initServerFull\020\002\022\023\n\017initA"
"uthFailure\020\003\022\027\n\023initPlayerNameInUse\020\004\022\031\n"
"\025initInvalidPlayerName\020\005\022\031\n\025initServerMa"
"intenance\020\006\022\017\n\013initBlocked\020\007\022\022\n\016avatarTo"
"oLarge\020\010\022\021\n\rinvalidPacket\020\t\022\020\n\014invalidSt"
"ate\020\n\022\024\n\020kickedFromServer\020\013\022\024\n\020bannedFro"
"mServer\020\014\022\023\n\017blockedByServer\020\r\022\022\n\016sessio"
"nTimeout\020\016\"\3771\n\016PokerTHMessage\0227\n\013message"
"Type\030\001 \002(\0162\".PokerTHMessage.PokerTHMessa"
"geType\022)\n\017announceMessage\030\002 \001(\0132\020.Announ"
"ceMessage\022!\n\013initMessage\030\003 \001(\0132\014.InitMes"
"sage\022\?\n\032authServerChallengeMessage\030\004 \001(\013"
"2\033.AuthServerChallengeMessage\022=\n\031authCli"
"entResponseMessage\030\005 \001(\0132\032.AuthClientRes"
"ponseMessage\022E\n\035authServerVerificationMe"
"ssage\030\006 \001(\0132\036.AuthServerVerificationMess"
"age\022\'\n\016initAckMessage\030\007 \001(\0132\017.InitAckMes"
"sage\0223\n\024avatarRequestMessage\030\010 \001(\0132\025.Ava"
"tarRequestMessage\0221\n\023avatarHeaderMessage"
"\030\t \001(\0132\024.AvatarHeaderMessage\022-\n\021avatarDa"
"taMessage\030\n \001(\0132\022.AvatarDataMessage\022+\n\020a"
"vatarEndMessage\030\013 \001(\0132\021.AvatarEndMessage"
"\0223\n\024unknownAvatarMessage\030\014 \001(\0132\025.Unknown"
"AvatarMessage\022-\n\021playerListMessage\030\r \001(\013"
"2\022.PlayerListMessage\022/\n\022gameListNewMessa"
"ge\030\016 \001(\0132\023.GameListNewMessage\0225\n\025gameLis"
"tUpdateMessage\030\017 \001(\0132\026.GameListUpdateMes"
"sage\022A\n\033gameListPlayerJoinedMessage\030\020 \001("
"\0132\034.GameListPlayerJoinedMessage\022=\n\031gameL"
"istPlayerLeftMessage\030\021 \001(\0132\032.GameListPla"
"yerLeftMessage\022A\n\033gameListAdminChangedMe"
"ssage\030\022 \001(\0132\034.GameListAdminChangedMessag"
"e\022;\n\030playerInfoRequestMessage\030\023 \001(\0132\031.Pl"
"ayerInfoRequestMessage\0227\n\026playerInfoRepl"
"yMessage\030\024 \001(\0132\027.PlayerInfoReplyMessage\022"
"\?\n\032subscriptionRequestMessage\030\025 \001(\0132\033.Su"
"bscriptionRequestMessage\0229\n\027joinExisting"
"GameMessage\030\026 \001(\0132\030.JoinExistingGameMess"
"age\022/\n\022joinNewGameMessage\030\027 \001(\0132\023.JoinNe"
"wGameMessage\022=\n\031rejoinExistingGameMessag"
"e\030\030 \001(\0132\032.RejoinExistingGameMessage\022/\n\022j"
"oinGameAckMessage\030\031 \001(\0132\023.JoinGameAckMes"
"sage\0225\n\025joinGameFailedMessage\030\032 \001(\0132\026.Jo"
"inGameFailedMessage\0229\n\027gamePlayerJoinedM"
"essage\030\033 \001(\0132\030.GamePlayerJoinedMessage\0225"
"\n\025gamePlayerLeftMessage\030\034 \001(\0132\026.GamePlay"
"erLeftMessage\0229\n\027gameAdminChangedMessage"
"\030\035 \001(\0132\030.GameAdminChangedMessage\0227\n\026remo"
"vedFromGameMessage\030\036 \001(\0132\027.RemovedFromGa"
"meMessage\022;\n\030kickPlayerRequestMessage\030\037 "
"\001(\0132\031.KickPlayerRequestMessage\0229\n\027leaveG"
"ameRequestMessage\030 \001(\0132\030.LeaveGameReque"
"stMessage\022=\n\031invitePlayerToGameMessage\030!"
" \001(\0132\032.InvitePlayerToGameMessage\0221\n\023invi"
"teNotifyMessage\030\" \001(\0132\024.InviteNotifyMess"
"age\022A\n\033rejectGameInvitationMessage\030# \001(\013"
"2\034.RejectGameInvitationMessage\0227\n\026reject"
"InvNotifyMessage\030$ \001(\0132\027.RejectInvNotify"
"Message\022-\n\021startEventMessage\030% \001(\0132\022.Sta"
"rtEventMessage\0223\n\024startEventAckMessage\030&"
" \001(\0132\025.StartEventAckMessage\0229\n\027gameStart"
"InitialMessage\030\' \001(\0132\030.GameStartInitialM"
"essage\0227\n\026gameStartRejoinMessage\030( \001(\0132\027"
".GameStartRejoinMessage\022+\n\020handStartMess"
"age\030) \001(\0132\021.HandStartMessage\022/\n\022playersT"
"urnMessage\030* \001(\0132\023.PlayersTurnMessage\0227\n"
"\026myActionRequestMessage\030+ \001(\0132\027.MyAction"
"RequestMessage\022=\n\031yourActionRejectedMess"
"age\030, \001(\0132\032.YourActionRejectedMessage\022;\n"
"\030playersActionDoneMessage\030- \001(\0132\031.Player"
"sActionDoneMessage\0223\n\024dealFlopCardsMessa"
"ge\030. \001(\0132\025.DealFlopCardsMessage\0221\n\023dealT"
"urnCardMessage\030/ \001(\0132\024.DealTurnCardMessa"
"ge\0223\n\024dealRiverCardMessage\0300 \001(\0132\025.DealR"
"iverCardMessage\0225\n\025allInShowCardsMessage"
"\0301 \001(\0132\026.AllInShowCardsMessage\022=\n\031endOfH"
"andShowCardsMessage\0302 \001(\0132\032.EndOfHandSho"
"wCardsMessage\022=\n\031endOfHandHideCardsMessa"
"ge\0303 \001(\0132\032.EndOfHandHideCardsMessage\022=\n\031"
"showMyCardsRequestMessage\0304 \001(\0132\032.ShowMy"
"CardsRequestMessage\022=\n\031afterHandShowCard"
"sMessage\0305 \001(\0132\032.AfterHandShowCardsMessa"
"ge\022+\n\020endOfGameMessage\0306 \001(\0132\021.EndOfGame"
"Message\0227\n\026playerIdChangedMessage\0307 \001(\0132"
"\027.PlayerIdChangedMessage\0223\n\024askKickPlaye"
"rMessage\0308 \001(\0132\025.AskKickPlayerMessage\0223\n"
"\024askKickDeniedMessage\0309 \001(\0132\025.AskKickDen"
"iedMessage\022;\n\030startKickPetitionMessage\030:"
" \001(\0132\031.StartKickPetitionMessage\0227\n\026voteK"
"ickRequestMessage\030; \001(\0132\027.VoteKickReques"
"tMessage\0223\n\024voteKickReplyMessage\030< \001(\0132\025"
".VoteKickReplyMessage\022=\n\031kickPetitionUpd"
"ateMessage\030= \001(\0132\032.KickPetitionUpdateMes"
"sage\0227\n\026endKickPetitionMessage\030> \001(\0132\027.E"
"ndKickPetitionMessage\022-\n\021statisticsMessa"
"ge\030\? \001(\0132\022.StatisticsMessage\022/\n\022chatRequ"
"estMessage\030@ \001(\0132\023.ChatRequestMessage\022!\n"
"\013chatMessage\030A \001(\0132\014.ChatMessage\022-\n\021chat"
"RejectMessage\030B \001(\0132\022.ChatRejectMessage\022"
"%\n\rdialogMessage\030C \001(\0132\016.DialogMessage\0225"
"\n\025timeoutWarningMessage\030D \001(\0132\026.TimeoutW"
"arningMessage\0221\n\023resetTimeoutMessage\030E \001"
"(\0132\024.ResetTimeoutMessage\0221\n\023reportAvatar"
"Message\030F \001(\0132\024.ReportAvatarMessage\0227\n\026r"
"eportAvatarAckMessage\030G \001(\0132\027.ReportAvat"
"arAckMessage\022-\n\021reportGameMessage\030H \001(\0132"
"\022.ReportGameMessage\0223\n\024reportGameAckMess"
"age\030I \001(\0132\025.ReportGameAckMessage\022#\n\014erro"
"rMessage\030J \001(\0132\r.ErrorMessage\"\244\022\n\022PokerT"
"HMessageType\022\030\n\024Type_AnnounceMessage\020\001\022\024"
"\n\020Type_InitMessage\020\002\022#\n\037Type_AuthServerC"
"hallengeMessage\020\003\022\"\n\036Type_AuthClientResp"
"onseMessage\020\004\022&\n\"Type_AuthServerVerifica"
"tionMessage\020\005\022\027\n\023Type_InitAckMessage\020\006\022\035"
"\n\031Type_AvatarRequestMessage\020\007\022\034\n\030Type_Av"
"atarHeaderMessage\020\010\022\032\n\026Type_AvatarDataMe"
"ssage\020\t\022\031\n\025Type_AvatarEndMessage\020\n\022\035\n\031Ty"
"pe_UnknownAvatarMessage\020\013\022\032\n\026Type_Player"
"ListMessage\020\014\022\033\n\027Type_GameListNewMessage"
"\020\r\022\036\n\032Type_GameListUpdateMessage\020\016\022$\n Ty"
"pe_GameListPlayerJoinedMessage\020\017\022\"\n\036Type"
"_GameListPlayerLeftMessage\020\020\022$\n Type_Gam"
"eListAdminChangedMessage\020\021\022!\n\035Type_Playe"
"rInfoRequestMessage\020\022\022\037\n\033Type_PlayerInfo"
"ReplyMessage\020\023\022#\n\037Type_SubscriptionReque"
"stMessage\020\024\022 \n\034Type_JoinExistingGameMess"
"age\020\025\022\033\n\027Type_JoinNewGameMessage\020\026\022\"\n\036Ty"
"pe_RejoinExistingGameMessage\020\027\022\033\n\027Type_J"
"oinGameAckMessage\020\030\022\036\n\032Type_JoinGameFail"
"edMessage\020\031\022 \n\034Type_GamePlayerJoinedMess"
"age\020\032\022\036\n\032Type_GamePlayerLeftMessage\020\033\022 \n"
"\034Type_GameAdminChangedMessage\020\034\022\037\n\033Type_"
"RemovedFromGameMessage\020\035\022!\n\035Type_KickPla"
"yerRequestMessage\020\036\022 \n\034Type_LeaveGameReq"
"uestMessage\020\037\022\"\n\036Type_InvitePlayerToGame"
"Message\020 \022\034\n\030Type_InviteNotifyMessage\020!\022"
"$\n Type_RejectGameInvitationMessage\020\"\022\037\n"
"\033Type_RejectInvNotifyMessage\020#\022\032\n\026Type_S"
"tartEventMessage\020$\022\035\n\031Type_StartEventAck"
"Message\020%\022 \n\034Type_GameStartInitialMessag"
"e\020&\022\037\n\033Type_GameStartRejoinMessage\020\'\022\031\n\025"
"Type_HandStartMessage\020(\022\033\n\027Type_PlayersT"
"urnMessage\020)\022\037\n\033Type_MyActionRequestMess"
"age\020*\022\"\n\036Type_YourActionRejectedMessage\020"
"+\022!\n\035Type_PlayersActionDoneMessage\020,\022\035\n\031"
"Type_DealFlopCardsMessage\020-\022\034\n\030Type_Deal"
"TurnCardMessage\020.\022\035\n\031Type_DealRiverCardM"
"essage\020/\022\036\n\032Type_AllInShowCardsMessage\0200"
"\022\"\n\036Type_EndOfHandShowCardsMessage\0201\022\"\n\036"
"Type_EndOfHandHideCardsMessage\0202\022\"\n\036Type"
"_ShowMyCardsRequestMessage\0203\022\"\n\036Type_Aft"
"erHandShowCardsMessage\0204\022\031\n\025Type_EndOfGa"
"meMessage\0205\022\037\n\033Type_PlayerIdChangedMessa"
"ge\0206\022\035\n\031Type_AskKickPlayerMessage\0207\022\035\n\031T"
"ype_AskKickDeniedMessage\0208\022!\n\035Type_Start"
"KickPetitionMessage\0209\022\037\n\033Type_VoteKickRe"
"questMessage\020:\022\035\n\031Type_VoteKickReplyMess"
"age\020;\022\"\n\036Type_KickPetitionUpdateMessage\020"
"<\022\037\n\033Type_EndKickPetitionMessage\020=\022\032\n\026Ty"
"pe_StatisticsMessage\020>\022\033\n\027Type_ChatReque"
"stMessage\020\?\022\024\n\020Type_ChatMessage\020@\022\032\n\026Typ"
"e_ChatRejectMessage\020A\022\026\n\022Type_DialogMess"
"age\020B\022\036\n\032Type_TimeoutWarningMessage\020C\022\034\n"
"\030Type_ResetTimeoutMessage\020D\022\034\n\030Type_Repo"
"rtAvatarMessage\020E\022\037\n\033Type_ReportAvatarAc"
"kMessage\020F\022\032\n\026Type_ReportGameMessage\020G\022\035"
"\n\031Type_ReportGameAckMessage\020H\022\025\n\021Type_Er"
"rorMessage\020I*H\n\013NetGameMode\022\022\n\016netGameCr"
"eated\020\001\022\022\n\016netGameStarted\020\002\022\021\n\rnetGameCl"
"osed\020\003*\226\001\n\014NetGameState\022\023\n\017netStatePrefl"
"op\020\000\022\020\n\014netStateFlop\020\001\022\020\n\014netStateTurn\020\002"
"\022\021\n\rnetStateRiver\020\003\022\035\n\031netStatePreflopSm"
"allBlind\020\004\022\033\n\027netStatePreflopBigBlind\020\005*"
"\230\001\n\017NetPlayerAction\022\021\n\rnetActionNone\020\000\022\021"
"\n\rnetActionFold\020\001\022\022\n\016netActionCheck\020\002\022\021\n"
"\rnetActionCall\020\003\022\020\n\014netActionBet\020\004\022\022\n\016ne"
"tActionRaise\020\005\022\022\n\016netActionAllIn\020\006*h\n\016Ne"
"tPlayerState\022\030\n\024netPlayerStateNormal\020\000\022!"
"\n\035netPlayerStateSessionInactive\020\001\022\031\n\025net"
"PlayerStateNoMoney\020\002*d\n\023NetPlayerInfoRig"
"hts\022\030\n\024netPlayerRightsGuest\020\001\022\031\n\025netPlay"
"erRightsNormal\020\002\022\030\n\024netPlayerRightsAdmin"
"\020\003*T\n\rNetAvatarType\022\025\n\021netAvatarImagePng"
"\020\001\022\025\n\021netAvatarImageJpg\020\002\022\025\n\021netAvatarIm"
"ageGif\020\003B\037\n\023de.pokerth.protocolB\010ProtoBu"
"f", 17841);
"ewAdminPlayerId\030\002 \002(\r\"0\n\030PlayerInfoReque"
"stMessage\022\024\n\010playerId\030\001 \003(\rB\002\020\001\"\360\002\n\026Play"
"erInfoReplyMessage\022\020\n\010playerId\030\001 \002(\r\022>\n\016"
"playerInfoData\030\002 \001(\0132&.PlayerInfoReplyMe"
"ssage.PlayerInfoData\032\203\002\n\016PlayerInfoData\022"
"\022\n\nplayerName\030\001 \002(\t\022\017\n\007isHuman\030\002 \002(\010\022*\n\014"
"playerRights\030\003 \002(\0162\024.NetPlayerInfoRights"
"\022\023\n\013countryCode\030\004 \001(\t\022E\n\navatarData\030\005 \001("
"\01321.PlayerInfoReplyMessage.PlayerInfoDat"
"a.AvatarData\032D\n\nAvatarData\022\"\n\navatarType"
"\030\001 \002(\0162\016.NetAvatarType\022\022\n\navatarHash\030\002 \002"
"(\014\"\260\001\n\032SubscriptionRequestMessage\022J\n\022sub"
"scriptionAction\030\001 \002(\0162..SubscriptionRequ"
"estMessage.SubscriptionAction\"F\n\022Subscri"
"ptionAction\022\027\n\023unsubscribeGameList\020\001\022\027\n\023"
"resubscribeGameList\020\002\"N\n\027JoinExistingGam"
"eMessage\022\016\n\006gameId\030\001 \002(\r\022\020\n\010password\030\002 \001"
"(\t\022\021\n\tautoLeave\030\003 \001(\010\"Y\n\022JoinNewGameMess"
"age\022\036\n\010gameInfo\030\001 \002(\0132\014.NetGameInfo\022\020\n\010p"
"assword\030\002 \001(\t\022\021\n\tautoLeave\030\003 \001(\010\">\n\031Rejo"
"inExistingGameMessage\022\016\n\006gameId\030\001 \002(\r\022\021\n"
"\tautoLeave\030\002 \001(\010\"]\n\022JoinGameAckMessage\022\016"
"\n\006gameId\030\001 \002(\r\022\027\n\017areYouGameAdmin\030\002 \002(\010\022"
"\036\n\010gameInfo\030\003 \002(\0132\014.NetGameInfo\"\337\002\n\025Join"
"GameFailedMessage\022\016\n\006gameId\030\001 \002(\r\022K\n\025joi"
"nGameFailureReason\030\002 \002(\0162,.JoinGameFaile"
"dMessage.JoinGameFailureReason\"\350\001\n\025JoinG"
"ameFailureReason\022\017\n\013invalidGame\020\001\022\016\n\ngam"
"eIsFull\020\002\022\021\n\rgameIsRunning\020\003\022\023\n\017invalidP"
"assword\020\004\022\025\n\021notAllowedAsGuest\020\005\022\016\n\nnotI"
"nvited\020\006\022\021\n\rgameNameInUse\020\007\022\017\n\013badGameNa"
"me\020\010\022\023\n\017invalidSettings\020\t\022\024\n\020ipAddressBl"
"ocked\020\n\022\020\n\014rejoinFailed\020\013\"P\n\027GamePlayerJ"
"oinedMessage\022\016\n\006gameId\030\001 \002(\r\022\020\n\010playerId"
"\030\002 \002(\r\022\023\n\013isGameAdmin\030\003 \002(\010\"\316\001\n\025GamePlay"
"erLeftMessage\022\016\n\006gameId\030\001 \002(\r\022\020\n\010playerI"
"d\030\002 \002(\r\022I\n\024gamePlayerLeftReason\030\003 \002(\0162+."
"GamePlayerLeftMessage.GamePlayerLeftReas"
"on\"H\n\024GamePlayerLeftReason\022\021\n\rleftOnRequ"
"est\020\000\022\016\n\nleftKicked\020\001\022\r\n\tleftError\020\002\"C\n\027"
"GameAdminChangedMessage\022\016\n\006gameId\030\001 \002(\r\022"
"\030\n\020newAdminPlayerId\030\002 \002(\r\"\206\002\n\026RemovedFro"
"mGameMessage\022\016\n\006gameId\030\001 \002(\r\022L\n\025removedF"
"romGameReason\030\002 \002(\0162-.RemovedFromGameMes"
"sage.RemovedFromGameReason\"\215\001\n\025RemovedFr"
"omGameReason\022\024\n\020removedOnRequest\020\000\022\022\n\016ki"
"ckedFromGame\020\001\022\016\n\ngameIsFull\020\002\022\021\n\rgameIs"
"Running\020\003\022\017\n\013gameTimeout\020\004\022\026\n\022removedSta"
"rtFailed\020\005\"<\n\030KickPlayerRequestMessage\022\016"
"\n\006gameId\030\001 \002(\r\022\020\n\010playerId\030\002 \002(\r\")\n\027Leav"
"eGameRequestMessage\022\016\n\006gameId\030\001 \002(\r\"=\n\031I"
"nvitePlayerToGameMessage\022\016\n\006gameId\030\001 \002(\r"
"\022\020\n\010playerId\030\002 \002(\r\"R\n\023InviteNotifyMessag"
"e\022\016\n\006gameId\030\001 \002(\r\022\023\n\013playerIdWho\030\002 \002(\r\022\026"
"\n\016playerIdByWhom\030\003 \002(\r\"\270\001\n\033RejectGameInv"
"itationMessage\022\016\n\006gameId\030\001 \002(\r\022H\n\016myReje"
"ctReason\030\002 \002(\01620.RejectGameInvitationMes"
"sage.RejectGameInvReason\"\?\n\023RejectGameIn"
"vReason\022\022\n\016rejectReasonNo\020\000\022\024\n\020rejectRea"
"sonBusy\020\001\"\210\001\n\026RejectInvNotifyMessage\022\016\n\006"
"gameId\030\001 \002(\r\022\020\n\010playerId\030\002 \002(\r\022L\n\022player"
"RejectReason\030\003 \002(\01620.RejectGameInvitatio"
"nMessage.RejectGameInvReason\"\262\001\n\021StartEv"
"entMessage\022\016\n\006gameId\030\001 \002(\r\0229\n\016startEvent"
"Type\030\002 \002(\0162!.StartEventMessage.StartEven"
"tType\022\037\n\027fillWithComputerPlayers\030\003 \001(\010\"1"
"\n\016StartEventType\022\016\n\nstartEvent\020\000\022\017\n\013rejo"
"inEvent\020\001\"&\n\024StartEventAckMessage\022\016\n\006gam"
"eId\030\001 \002(\r\"_\n\027GameStartInitialMessage\022\016\n\006"
"gameId\030\001 \002(\r\022\033\n\023startDealerPlayerId\030\002 \002("
"\r\022\027\n\013playerSeats\030\003 \003(\rB\002\020\001\"\325\001\n\026GameStart"
"RejoinMessage\022\016\n\006gameId\030\001 \002(\r\022\033\n\023startDe"
"alerPlayerId\030\002 \002(\r\022\017\n\007handNum\030\003 \002(\r\022B\n\020r"
"ejoinPlayerData\030\004 \003(\0132(.GameStartRejoinM"
"essage.RejoinPlayerData\0329\n\020RejoinPlayerD"
"ata\022\020\n\010playerId\030\001 \002(\r\022\023\n\013playerMoney\030\002 \002"
"(\r\"\333\001\n\020HandStartMessage\022\016\n\006gameId\030\001 \002(\r\022"
"0\n\nplainCards\030\002 \001(\0132\034.HandStartMessage.P"
"lainCards\022\026\n\016encryptedCards\030\003 \001(\014\022\022\n\nsma"
"llBlind\030\004 \002(\r\022#\n\nseatStates\030\005 \003(\0162\017.NetP"
"layerState\0324\n\nPlainCards\022\022\n\nplainCard1\030\001"
" \002(\r\022\022\n\nplainCard2\030\002 \002(\r\"X\n\022PlayersTurnM"
"essage\022\016\n\006gameId\030\001 \002(\r\022\020\n\010playerId\030\002 \002(\r"
"\022 \n\tgameState\030\003 \002(\0162\r.NetGameState\"\226\001\n\026M"
"yActionRequestMessage\022\016\n\006gameId\030\001 \002(\r\022\017\n"
"\007handNum\030\002 \002(\r\022 \n\tgameState\030\003 \002(\0162\r.NetG"
"ameState\022\"\n\010myAction\030\004 \002(\0162\020.NetPlayerAc"
"tion\022\025\n\rmyRelativeBet\030\005 \002(\r\"\271\002\n\031YourActi"
"onRejectedMessage\022\016\n\006gameId\030\001 \002(\r\022 \n\tgam"
"eState\030\002 \002(\0162\r.NetGameState\022$\n\nyourActio"
"n\030\003 \002(\0162\020.NetPlayerAction\022\027\n\017yourRelativ"
"eBet\030\004 \002(\r\022C\n\017rejectionReason\030\005 \002(\0162*.Yo"
"urActionRejectedMessage.RejectionReason\""
"f\n\017RejectionReason\022\034\n\030rejectedInvalidGam"
"eState\020\001\022\027\n\023rejectedNotYourTurn\020\002\022\034\n\030rej"
"ectedActionNotAllowed\020\003\"\335\001\n\030PlayersActio"
"nDoneMessage\022\016\n\006gameId\030\001 \002(\r\022\020\n\010playerId"
"\030\002 \002(\r\022 \n\tgameState\030\003 \002(\0162\r.NetGameState"
"\022&\n\014playerAction\030\004 \002(\0162\020.NetPlayerAction"
"\022\026\n\016totalPlayerBet\030\005 \002(\r\022\023\n\013playerMoney\030"
"\006 \002(\r\022\022\n\nhighestSet\030\007 \002(\r\022\024\n\014minimumRais"
"e\030\010 \002(\r\"_\n\024DealFlopCardsMessage\022\016\n\006gameI"
"d\030\001 \002(\r\022\021\n\tflopCard1\030\002 \002(\r\022\021\n\tflopCard2\030"
"\003 \002(\r\022\021\n\tflopCard3\030\004 \002(\r\"7\n\023DealTurnCard"
"Message\022\016\n\006gameId\030\001 \002(\r\022\020\n\010turnCard\030\002 \002("
"\r\"9\n\024DealRiverCardMessage\022\016\n\006gameId\030\001 \002("
"\r\022\021\n\triverCard\030\002 \002(\r\"\252\001\n\025AllInShowCardsM"
"essage\022\016\n\006gameId\030\001 \002(\r\0228\n\014playersAllIn\030\002"
" \003(\0132\".AllInShowCardsMessage.PlayerAllIn"
"\032G\n\013PlayerAllIn\022\020\n\010playerId\030\001 \002(\r\022\022\n\nall"
"InCard1\030\002 \002(\r\022\022\n\nallInCard2\030\003 \002(\r\"Q\n\031End"
"OfHandShowCardsMessage\022\016\n\006gameId\030\001 \002(\r\022$"
"\n\rplayerResults\030\002 \003(\0132\r.PlayerResult\"d\n\031"
"EndOfHandHideCardsMessage\022\016\n\006gameId\030\001 \002("
"\r\022\020\n\010playerId\030\002 \002(\r\022\020\n\010moneyWon\030\003 \002(\r\022\023\n"
"\013playerMoney\030\004 \002(\r\"\033\n\031ShowMyCardsRequest"
"Message\"@\n\031AfterHandShowCardsMessage\022#\n\014"
"playerResult\030\001 \002(\0132\r.PlayerResult\":\n\020End"
"OfGameMessage\022\016\n\006gameId\030\001 \002(\r\022\026\n\016winnerP"
"layerId\030\002 \002(\r\"B\n\026PlayerIdChangedMessage\022"
"\023\n\013oldPlayerId\030\001 \002(\r\022\023\n\013newPlayerId\030\002 \002("
"\r\"8\n\024AskKickPlayerMessage\022\016\n\006gameId\030\001 \002("
"\r\022\020\n\010playerId\030\002 \002(\r\"\247\002\n\024AskKickDeniedMes"
"sage\022\016\n\006gameId\030\001 \002(\r\022\020\n\010playerId\030\002 \002(\r\022@"
"\n\020kickDeniedReason\030\003 \002(\0162&.AskKickDenied"
"Message.KickDeniedReason\"\252\001\n\020KickDeniedR"
"eason\022\036\n\032kickDeniedInvalidGameState\020\000\022\031\n"
"\025kickDeniedNotPossible\020\001\022\033\n\027kickDeniedTr"
"yAgainLater\020\002\022\037\n\033kickDeniedAlreadyInProg"
"ress\020\003\022\035\n\031kickDeniedInvalidPlayerId\020\004\"\245\001"
"\n\030StartKickPetitionMessage\022\016\n\006gameId\030\001 \002"
"(\r\022\022\n\npetitionId\030\002 \002(\r\022\031\n\021proposingPlaye"
"rId\030\003 \002(\r\022\024\n\014kickPlayerId\030\004 \002(\r\022\026\n\016kickT"
"imeoutSec\030\005 \002(\r\022\034\n\024numVotesNeededToKick\030"
"\006 \002(\r\"N\n\026VoteKickRequestMessage\022\016\n\006gameI"
"d\030\001 \002(\r\022\022\n\npetitionId\030\002 \002(\r\022\020\n\010voteKick\030"
"\003 \002(\010\"\337\001\n\024VoteKickReplyMessage\022\016\n\006gameId"
"\030\001 \002(\r\022\022\n\npetitionId\030\002 \002(\r\022B\n\021voteKickRe"
"plyType\030\003 \002(\0162\'.VoteKickReplyMessage.Vot"
"eKickReplyType\"_\n\021VoteKickReplyType\022\017\n\013v"
"oteKickAck\020\000\022\031\n\025voteKickDeniedInvalid\020\001\022"
"\036\n\032voteKickDeniedAlreadyVoted\020\002\"\240\001\n\031Kick"
"PetitionUpdateMessage\022\016\n\006gameId\030\001 \002(\r\022\022\n"
"\npetitionId\030\002 \002(\r\022\036\n\026numVotesAgainstKick"
"ing\030\003 \002(\r\022!\n\031numVotesInFavourOfKicking\030\004"
" \002(\r\022\034\n\024numVotesNeededToKick\030\005 \002(\r\"\344\002\n\026E"
"ndKickPetitionMessage\022\016\n\006gameId\030\001 \002(\r\022\022\n"
"\npetitionId\030\002 \002(\r\022\036\n\026numVotesAgainstKick"
"ing\030\003 \002(\r\022!\n\031numVotesInFavourOfKicking\030\004"
" \002(\r\022\032\n\022resultPlayerKicked\030\005 \002(\r\022D\n\021peti"
"tionEndReason\030\006 \002(\0162).EndKickPetitionMes"
"sage.PetitionEndReason\"\200\001\n\021PetitionEndRe"
"ason\022\032\n\026petitionEndEnoughVotes\020\000\022\034\n\030peti"
"tionEndTooFewPlayers\020\001\022\031\n\025petitionEndPla"
"yerLeft\020\002\022\026\n\022petitionEndTimeout\020\003\"\357\001\n\021St"
"atisticsMessage\0229\n\016statisticsData\030\001 \003(\0132"
"!.StatisticsMessage.StatisticsData\032\236\001\n\016S"
"tatisticsData\022H\n\016statisticsType\030\001 \002(\01620."
"StatisticsMessage.StatisticsData.Statist"
"icsType\022\027\n\017statisticsValue\030\002 \002(\r\")\n\016Stat"
"isticsType\022\027\n\023statNumberOfPlayers\020\001\"T\n\022C"
"hatRequestMessage\022\024\n\014targetGameId\030\001 \001(\r\022"
"\026\n\016targetPlayerId\030\002 \001(\r\022\020\n\010chatText\030\003 \002("
"\t\"\330\001\n\013ChatMessage\022\016\n\006gameId\030\001 \001(\r\022\020\n\010pla"
"yerId\030\002 \001(\r\022\'\n\010chatType\030\003 \002(\0162\025.ChatMess"
"age.ChatType\022\020\n\010chatText\030\004 \002(\t\"l\n\010ChatTy"
"pe\022\021\n\rchatTypeLobby\020\000\022\020\n\014chatTypeGame\020\001\022"
"\017\n\013chatTypeBot\020\002\022\025\n\021chatTypeBroadcast\020\003\022"
"\023\n\017chatTypePrivate\020\004\"%\n\021ChatRejectMessag"
"e\022\020\n\010chatText\030\001 \002(\t\")\n\rDialogMessage\022\030\n\020"
"notificationText\030\001 \002(\t\"\321\001\n\025TimeoutWarnin"
"gMessage\022;\n\rtimeoutReason\030\001 \002(\0162$.Timeou"
"tWarningMessage.TimeoutReason\022\030\n\020remaini"
"ngSeconds\030\002 \002(\r\"a\n\rTimeoutReason\022\031\n\025time"
"outNoDataReceived\020\000\022\027\n\023timeoutInactiveGa"
"me\020\001\022\034\n\030timeoutKickAfterAutofold\020\002\"\025\n\023Re"
"setTimeoutMessage\"K\n\023ReportAvatarMessage"
"\022\030\n\020reportedPlayerId\030\001 \002(\r\022\032\n\022reportedAv"
"atarHash\030\002 \002(\014\"\336\001\n\026ReportAvatarAckMessag"
"e\022\030\n\020reportedPlayerId\030\001 \002(\r\022F\n\022reportAva"
"tarResult\030\002 \002(\0162*.ReportAvatarAckMessage"
".ReportAvatarResult\"b\n\022ReportAvatarResul"
"t\022\030\n\024avatarReportAccepted\020\000\022\031\n\025avatarRep"
"ortDuplicate\020\001\022\027\n\023avatarReportInvalid\020\002\""
"+\n\021ReportGameMessage\022\026\n\016reportedGameId\030\001"
" \002(\r\"\314\001\n\024ReportGameAckMessage\022\026\n\016reporte"
"dGameId\030\001 \002(\r\022@\n\020reportGameResult\030\002 \002(\0162"
"&.ReportGameAckMessage.ReportGameResult\""
"Z\n\020ReportGameResult\022\026\n\022gameReportAccepte"
"d\020\000\022\027\n\023gameReportDuplicate\020\001\022\025\n\021gameRepo"
"rtInvalid\020\002\"\220\003\n\014ErrorMessage\022.\n\013errorRea"
"son\030\001 \002(\0162\031.ErrorMessage.ErrorReason\"\317\002\n"
"\013ErrorReason\022\014\n\010reserved\020\000\022\033\n\027initVersio"
"nNotSupported\020\001\022\022\n\016initServerFull\020\002\022\023\n\017i"
"nitAuthFailure\020\003\022\027\n\023initPlayerNameInUse\020"
"\004\022\031\n\025initInvalidPlayerName\020\005\022\031\n\025initServ"
"erMaintenance\020\006\022\017\n\013initBlocked\020\007\022\022\n\016avat"
"arTooLarge\020\010\022\021\n\rinvalidPacket\020\t\022\020\n\014inval"
"idState\020\n\022\024\n\020kickedFromServer\020\013\022\024\n\020banne"
"dFromServer\020\014\022\023\n\017blockedByServer\020\r\022\022\n\016se"
"ssionTimeout\020\016\"\3771\n\016PokerTHMessage\0227\n\013mes"
"sageType\030\001 \002(\0162\".PokerTHMessage.PokerTHM"
"essageType\022)\n\017announceMessage\030\002 \001(\0132\020.An"
"nounceMessage\022!\n\013initMessage\030\003 \001(\0132\014.Ini"
"tMessage\022\?\n\032authServerChallengeMessage\030\004"
" \001(\0132\033.AuthServerChallengeMessage\022=\n\031aut"
"hClientResponseMessage\030\005 \001(\0132\032.AuthClien"
"tResponseMessage\022E\n\035authServerVerificati"
"onMessage\030\006 \001(\0132\036.AuthServerVerification"
"Message\022\'\n\016initAckMessage\030\007 \001(\0132\017.InitAc"
"kMessage\0223\n\024avatarRequestMessage\030\010 \001(\0132\025"
".AvatarRequestMessage\0221\n\023avatarHeaderMes"
"sage\030\t \001(\0132\024.AvatarHeaderMessage\022-\n\021avat"
"arDataMessage\030\n \001(\0132\022.AvatarDataMessage\022"
"+\n\020avatarEndMessage\030\013 \001(\0132\021.AvatarEndMes"
"sage\0223\n\024unknownAvatarMessage\030\014 \001(\0132\025.Unk"
"nownAvatarMessage\022-\n\021playerListMessage\030\r"
" \001(\0132\022.PlayerListMessage\022/\n\022gameListNewM"
"essage\030\016 \001(\0132\023.GameListNewMessage\0225\n\025gam"
"eListUpdateMessage\030\017 \001(\0132\026.GameListUpdat"
"eMessage\022A\n\033gameListPlayerJoinedMessage\030"
"\020 \001(\0132\034.GameListPlayerJoinedMessage\022=\n\031g"
"ameListPlayerLeftMessage\030\021 \001(\0132\032.GameLis"
"tPlayerLeftMessage\022A\n\033gameListAdminChang"
"edMessage\030\022 \001(\0132\034.GameListAdminChangedMe"
"ssage\022;\n\030playerInfoRequestMessage\030\023 \001(\0132"
"\031.PlayerInfoRequestMessage\0227\n\026playerInfo"
"ReplyMessage\030\024 \001(\0132\027.PlayerInfoReplyMess"
"age\022\?\n\032subscriptionRequestMessage\030\025 \001(\0132"
"\033.SubscriptionRequestMessage\0229\n\027joinExis"
"tingGameMessage\030\026 \001(\0132\030.JoinExistingGame"
"Message\022/\n\022joinNewGameMessage\030\027 \001(\0132\023.Jo"
"inNewGameMessage\022=\n\031rejoinExistingGameMe"
"ssage\030\030 \001(\0132\032.RejoinExistingGameMessage\022"
"/\n\022joinGameAckMessage\030\031 \001(\0132\023.JoinGameAc"
"kMessage\0225\n\025joinGameFailedMessage\030\032 \001(\0132"
"\026.JoinGameFailedMessage\0229\n\027gamePlayerJoi"
"nedMessage\030\033 \001(\0132\030.GamePlayerJoinedMessa"
"ge\0225\n\025gamePlayerLeftMessage\030\034 \001(\0132\026.Game"
"PlayerLeftMessage\0229\n\027gameAdminChangedMes"
"sage\030\035 \001(\0132\030.GameAdminChangedMessage\0227\n\026"
"removedFromGameMessage\030\036 \001(\0132\027.RemovedFr"
"omGameMessage\022;\n\030kickPlayerRequestMessag"
"e\030\037 \001(\0132\031.KickPlayerRequestMessage\0229\n\027le"
"aveGameRequestMessage\030 \001(\0132\030.LeaveGameR"
"equestMessage\022=\n\031invitePlayerToGameMessa"
"ge\030! \001(\0132\032.InvitePlayerToGameMessage\0221\n\023"
"inviteNotifyMessage\030\" \001(\0132\024.InviteNotify"
"Message\022A\n\033rejectGameInvitationMessage\030#"
" \001(\0132\034.RejectGameInvitationMessage\0227\n\026re"
"jectInvNotifyMessage\030$ \001(\0132\027.RejectInvNo"
"tifyMessage\022-\n\021startEventMessage\030% \001(\0132\022"
".StartEventMessage\0223\n\024startEventAckMessa"
"ge\030& \001(\0132\025.StartEventAckMessage\0229\n\027gameS"
"tartInitialMessage\030\' \001(\0132\030.GameStartInit"
"ialMessage\0227\n\026gameStartRejoinMessage\030( \001"
"(\0132\027.GameStartRejoinMessage\022+\n\020handStart"
"Message\030) \001(\0132\021.HandStartMessage\022/\n\022play"
"ersTurnMessage\030* \001(\0132\023.PlayersTurnMessag"
"e\0227\n\026myActionRequestMessage\030+ \001(\0132\027.MyAc"
"tionRequestMessage\022=\n\031yourActionRejected"
"Message\030, \001(\0132\032.YourActionRejectedMessag"
"e\022;\n\030playersActionDoneMessage\030- \001(\0132\031.Pl"
"ayersActionDoneMessage\0223\n\024dealFlopCardsM"
"essage\030. \001(\0132\025.DealFlopCardsMessage\0221\n\023d"
"ealTurnCardMessage\030/ \001(\0132\024.DealTurnCardM"
"essage\0223\n\024dealRiverCardMessage\0300 \001(\0132\025.D"
"ealRiverCardMessage\0225\n\025allInShowCardsMes"
"sage\0301 \001(\0132\026.AllInShowCardsMessage\022=\n\031en"
"dOfHandShowCardsMessage\0302 \001(\0132\032.EndOfHan"
"dShowCardsMessage\022=\n\031endOfHandHideCardsM"
"essage\0303 \001(\0132\032.EndOfHandHideCardsMessage"
"\022=\n\031showMyCardsRequestMessage\0304 \001(\0132\032.Sh"
"owMyCardsRequestMessage\022=\n\031afterHandShow"
"CardsMessage\0305 \001(\0132\032.AfterHandShowCardsM"
"essage\022+\n\020endOfGameMessage\0306 \001(\0132\021.EndOf"
"GameMessage\0227\n\026playerIdChangedMessage\0307 "
"\001(\0132\027.PlayerIdChangedMessage\0223\n\024askKickP"
"layerMessage\0308 \001(\0132\025.AskKickPlayerMessag"
"e\0223\n\024askKickDeniedMessage\0309 \001(\0132\025.AskKic"
"kDeniedMessage\022;\n\030startKickPetitionMessa"
"ge\030: \001(\0132\031.StartKickPetitionMessage\0227\n\026v"
"oteKickRequestMessage\030; \001(\0132\027.VoteKickRe"
"questMessage\0223\n\024voteKickReplyMessage\030< \001"
"(\0132\025.VoteKickReplyMessage\022=\n\031kickPetitio"
"nUpdateMessage\030= \001(\0132\032.KickPetitionUpdat"
"eMessage\0227\n\026endKickPetitionMessage\030> \001(\013"
"2\027.EndKickPetitionMessage\022-\n\021statisticsM"
"essage\030\? \001(\0132\022.StatisticsMessage\022/\n\022chat"
"RequestMessage\030@ \001(\0132\023.ChatRequestMessag"
"e\022!\n\013chatMessage\030A \001(\0132\014.ChatMessage\022-\n\021"
"chatRejectMessage\030B \001(\0132\022.ChatRejectMess"
"age\022%\n\rdialogMessage\030C \001(\0132\016.DialogMessa"
"ge\0225\n\025timeoutWarningMessage\030D \001(\0132\026.Time"
"outWarningMessage\0221\n\023resetTimeoutMessage"
"\030E \001(\0132\024.ResetTimeoutMessage\0221\n\023reportAv"
"atarMessage\030F \001(\0132\024.ReportAvatarMessage\022"
"7\n\026reportAvatarAckMessage\030G \001(\0132\027.Report"
"AvatarAckMessage\022-\n\021reportGameMessage\030H "
"\001(\0132\022.ReportGameMessage\0223\n\024reportGameAck"
"Message\030I \001(\0132\025.ReportGameAckMessage\022#\n\014"
"errorMessage\030J \001(\0132\r.ErrorMessage\"\244\022\n\022Po"
"kerTHMessageType\022\030\n\024Type_AnnounceMessage"
"\020\001\022\024\n\020Type_InitMessage\020\002\022#\n\037Type_AuthSer"
"verChallengeMessage\020\003\022\"\n\036Type_AuthClient"
"ResponseMessage\020\004\022&\n\"Type_AuthServerVeri"
"ficationMessage\020\005\022\027\n\023Type_InitAckMessage"
"\020\006\022\035\n\031Type_AvatarRequestMessage\020\007\022\034\n\030Typ"
"e_AvatarHeaderMessage\020\010\022\032\n\026Type_AvatarDa"
"taMessage\020\t\022\031\n\025Type_AvatarEndMessage\020\n\022\035"
"\n\031Type_UnknownAvatarMessage\020\013\022\032\n\026Type_Pl"
"ayerListMessage\020\014\022\033\n\027Type_GameListNewMes"
"sage\020\r\022\036\n\032Type_GameListUpdateMessage\020\016\022$"
"\n Type_GameListPlayerJoinedMessage\020\017\022\"\n\036"
"Type_GameListPlayerLeftMessage\020\020\022$\n Type"
"_GameListAdminChangedMessage\020\021\022!\n\035Type_P"
"layerInfoRequestMessage\020\022\022\037\n\033Type_Player"
"InfoReplyMessage\020\023\022#\n\037Type_SubscriptionR"
"equestMessage\020\024\022 \n\034Type_JoinExistingGame"
"Message\020\025\022\033\n\027Type_JoinNewGameMessage\020\026\022\""
"\n\036Type_RejoinExistingGameMessage\020\027\022\033\n\027Ty"
"pe_JoinGameAckMessage\020\030\022\036\n\032Type_JoinGame"
"FailedMessage\020\031\022 \n\034Type_GamePlayerJoined"
"Message\020\032\022\036\n\032Type_GamePlayerLeftMessage\020"
"\033\022 \n\034Type_GameAdminChangedMessage\020\034\022\037\n\033T"
"ype_RemovedFromGameMessage\020\035\022!\n\035Type_Kic"
"kPlayerRequestMessage\020\036\022 \n\034Type_LeaveGam"
"eRequestMessage\020\037\022\"\n\036Type_InvitePlayerTo"
"GameMessage\020 \022\034\n\030Type_InviteNotifyMessag"
"e\020!\022$\n Type_RejectGameInvitationMessage\020"
"\"\022\037\n\033Type_RejectInvNotifyMessage\020#\022\032\n\026Ty"
"pe_StartEventMessage\020$\022\035\n\031Type_StartEven"
"tAckMessage\020%\022 \n\034Type_GameStartInitialMe"
"ssage\020&\022\037\n\033Type_GameStartRejoinMessage\020\'"
"\022\031\n\025Type_HandStartMessage\020(\022\033\n\027Type_Play"
"ersTurnMessage\020)\022\037\n\033Type_MyActionRequest"
"Message\020*\022\"\n\036Type_YourActionRejectedMess"
"age\020+\022!\n\035Type_PlayersActionDoneMessage\020,"
"\022\035\n\031Type_DealFlopCardsMessage\020-\022\034\n\030Type_"
"DealTurnCardMessage\020.\022\035\n\031Type_DealRiverC"
"ardMessage\020/\022\036\n\032Type_AllInShowCardsMessa"
"ge\0200\022\"\n\036Type_EndOfHandShowCardsMessage\0201"
"\022\"\n\036Type_EndOfHandHideCardsMessage\0202\022\"\n\036"
"Type_ShowMyCardsRequestMessage\0203\022\"\n\036Type"
"_AfterHandShowCardsMessage\0204\022\031\n\025Type_End"
"OfGameMessage\0205\022\037\n\033Type_PlayerIdChangedM"
"essage\0206\022\035\n\031Type_AskKickPlayerMessage\0207\022"
"\035\n\031Type_AskKickDeniedMessage\0208\022!\n\035Type_S"
"tartKickPetitionMessage\0209\022\037\n\033Type_VoteKi"
"ckRequestMessage\020:\022\035\n\031Type_VoteKickReply"
"Message\020;\022\"\n\036Type_KickPetitionUpdateMess"
"age\020<\022\037\n\033Type_EndKickPetitionMessage\020=\022\032"
"\n\026Type_StatisticsMessage\020>\022\033\n\027Type_ChatR"
"equestMessage\020\?\022\024\n\020Type_ChatMessage\020@\022\032\n"
"\026Type_ChatRejectMessage\020A\022\026\n\022Type_Dialog"
"Message\020B\022\036\n\032Type_TimeoutWarningMessage\020"
"C\022\034\n\030Type_ResetTimeoutMessage\020D\022\034\n\030Type_"
"ReportAvatarMessage\020E\022\037\n\033Type_ReportAvat"
"arAckMessage\020F\022\032\n\026Type_ReportGameMessage"
"\020G\022\035\n\031Type_ReportGameAckMessage\020H\022\025\n\021Typ"
"e_ErrorMessage\020I*H\n\013NetGameMode\022\022\n\016netGa"
"meCreated\020\001\022\022\n\016netGameStarted\020\002\022\021\n\rnetGa"
"meClosed\020\003*\226\001\n\014NetGameState\022\023\n\017netStateP"
"reflop\020\000\022\020\n\014netStateFlop\020\001\022\020\n\014netStateTu"
"rn\020\002\022\021\n\rnetStateRiver\020\003\022\035\n\031netStatePrefl"
"opSmallBlind\020\004\022\033\n\027netStatePreflopBigBlin"
"d\020\005*\230\001\n\017NetPlayerAction\022\021\n\rnetActionNone"
"\020\000\022\021\n\rnetActionFold\020\001\022\022\n\016netActionCheck\020"
"\002\022\021\n\rnetActionCall\020\003\022\020\n\014netActionBet\020\004\022\022"
"\n\016netActionRaise\020\005\022\022\n\016netActionAllIn\020\006*h"
"\n\016NetPlayerState\022\030\n\024netPlayerStateNormal"
"\020\000\022!\n\035netPlayerStateSessionInactive\020\001\022\031\n"
"\025netPlayerStateNoMoney\020\002*d\n\023NetPlayerInf"
"oRights\022\030\n\024netPlayerRightsGuest\020\001\022\031\n\025net"
"PlayerRightsNormal\020\002\022\030\n\024netPlayerRightsA"
"dmin\020\003*T\n\rNetAvatarType\022\025\n\021netAvatarImag"
"ePng\020\001\022\025\n\021netAvatarImageJpg\020\002\022\025\n\021netAvat"
"arImageGif\020\003B\037\n\023de.pokerth.protocolB\010Pro"
"toBuf", 17845);
::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
"pokerth.proto", &protobuf_RegisterTypes);
NetGameInfo::default_instance_ = new NetGameInfo();
@@ -9410,7 +9410,6 @@ PlayerInfoRequestMessage::PlayerInfoRequestMessage(const PlayerInfoRequestMessag
void PlayerInfoRequestMessage::SharedCtor() {
_cached_size_ = 0;
playerid_ = 0u;
::memset(_has_bits_, 0, sizeof(_has_bits_));
}
@@ -9444,9 +9443,7 @@ PlayerInfoRequestMessage* PlayerInfoRequestMessage::New() const {
}
void PlayerInfoRequestMessage::Clear() {
if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
playerid_ = 0u;
}
playerid_.Clear();
::memset(_has_bits_, 0, sizeof(_has_bits_));
mutable_unknown_fields()->Clear();
}
@@ -9457,14 +9454,19 @@ bool PlayerInfoRequestMessage::MergePartialFromCodedStream(
::google::protobuf::uint32 tag;
while ((tag = input->ReadTag()) != 0) {
switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
// required uint32 playerId = 1;
// repeated uint32 playerId = 1 [packed = true];
case 1: {
if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
input, &playerid_)));
set_has_playerid();
input, this->mutable_playerid())));
} else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
== ::google::protobuf::internal::WireFormatLite::
WIRETYPE_VARINT) {
DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
1, 10, input, this->mutable_playerid())));
} else {
goto handle_uninterpreted;
}
@@ -9490,9 +9492,14 @@ bool PlayerInfoRequestMessage::MergePartialFromCodedStream(
void PlayerInfoRequestMessage::SerializeWithCachedSizes(
::google::protobuf::io::CodedOutputStream* output) const {
// required uint32 playerId = 1;
if (has_playerid()) {
::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->playerid(), output);
// repeated uint32 playerId = 1 [packed = true];
if (this->playerid_size() > 0) {
::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
output->WriteVarint32(_playerid_cached_byte_size_);
}
for (int i = 0; i < this->playerid_size(); i++) {
::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
this->playerid(i), output);
}
if (!unknown_fields().empty()) {
@@ -9503,9 +9510,18 @@ void PlayerInfoRequestMessage::SerializeWithCachedSizes(
::google::protobuf::uint8* PlayerInfoRequestMessage::SerializeWithCachedSizesToArray(
::google::protobuf::uint8* target) const {
// required uint32 playerId = 1;
if (has_playerid()) {
target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->playerid(), target);
// repeated uint32 playerId = 1 [packed = true];
if (this->playerid_size() > 0) {
target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
1,
::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
target);
target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
_playerid_cached_byte_size_, target);
}
for (int i = 0; i < this->playerid_size(); i++) {
target = ::google::protobuf::internal::WireFormatLite::
WriteUInt32NoTagToArray(this->playerid(i), target);
}
if (!unknown_fields().empty()) {
@@ -9518,15 +9534,21 @@ void PlayerInfoRequestMessage::SerializeWithCachedSizes(
int PlayerInfoRequestMessage::ByteSize() const {
int total_size = 0;
if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
// required uint32 playerId = 1;
if (has_playerid()) {
total_size += 1 +
::google::protobuf::internal::WireFormatLite::UInt32Size(
this->playerid());
// repeated uint32 playerId = 1 [packed = true];
{
int data_size = 0;
for (int i = 0; i < this->playerid_size(); i++) {
data_size += ::google::protobuf::internal::WireFormatLite::
UInt32Size(this->playerid(i));
}
if (data_size > 0) {
total_size += 1 +
::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
}
_playerid_cached_byte_size_ = data_size;
total_size += data_size;
}
if (!unknown_fields().empty()) {
total_size +=
::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
@@ -9552,11 +9574,7 @@ void PlayerInfoRequestMessage::MergeFrom(const ::google::protobuf::Message& from
void PlayerInfoRequestMessage::MergeFrom(const PlayerInfoRequestMessage& from) {
GOOGLE_CHECK_NE(&from, this);
if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
if (from.has_playerid()) {
set_playerid(from.playerid());
}
}
playerid_.MergeFrom(from.playerid_);
mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}
@@ -9573,14 +9591,13 @@ void PlayerInfoRequestMessage::CopyFrom(const PlayerInfoRequestMessage& from) {
}
bool PlayerInfoRequestMessage::IsInitialized() const {
if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
return true;
}
void PlayerInfoRequestMessage::Swap(PlayerInfoRequestMessage* other) {
if (other != this) {
std::swap(playerid_, other->playerid_);
playerid_.Swap(&other->playerid_);
std::swap(_has_bits_[0], other->_has_bits_[0]);
_unknown_fields_.Swap(&other->_unknown_fields_);
std::swap(_cached_size_, other->_cached_size_);
@@ -30738,9 +30755,6 @@ bool PokerTHMessage::IsInitialized() const {
if (has_gamelistadminchangedmessage()) {
if (!this->gamelistadminchangedmessage().IsInitialized()) return false;
}
if (has_playerinforequestmessage()) {
if (!this->playerinforequestmessage().IsInitialized()) return false;
}
if (has_playerinforeplymessage()) {
if (!this->playerinforeplymessage().IsInitialized()) return false;
}
+29 -22
View File
@@ -3188,21 +3188,25 @@ class PlayerInfoRequestMessage : public ::google::protobuf::Message {
// accessors -------------------------------------------------------
// required uint32 playerId = 1;
inline bool has_playerid() const;
// repeated uint32 playerId = 1 [packed = true];
inline int playerid_size() const;
inline void clear_playerid();
static const int kPlayerIdFieldNumber = 1;
inline ::google::protobuf::uint32 playerid() const;
inline void set_playerid(::google::protobuf::uint32 value);
inline ::google::protobuf::uint32 playerid(int index) const;
inline void set_playerid(int index, ::google::protobuf::uint32 value);
inline void add_playerid(::google::protobuf::uint32 value);
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
playerid() const;
inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
mutable_playerid();
// @@protoc_insertion_point(class_scope:PlayerInfoRequestMessage)
private:
inline void set_has_playerid();
inline void clear_has_playerid();
::google::protobuf::UnknownFieldSet _unknown_fields_;
::google::protobuf::uint32 playerid_;
::google::protobuf::RepeatedField< ::google::protobuf::uint32 > playerid_;
mutable int _playerid_cached_byte_size_;
mutable int _cached_size_;
::google::protobuf::uint32 _has_bits_[(1 + 31) / 32];
@@ -12795,26 +12799,29 @@ inline void GameListAdminChangedMessage::set_newadminplayerid(::google::protobuf
// PlayerInfoRequestMessage
// required uint32 playerId = 1;
inline bool PlayerInfoRequestMessage::has_playerid() const {
return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void PlayerInfoRequestMessage::set_has_playerid() {
_has_bits_[0] |= 0x00000001u;
}
inline void PlayerInfoRequestMessage::clear_has_playerid() {
_has_bits_[0] &= ~0x00000001u;
// repeated uint32 playerId = 1 [packed = true];
inline int PlayerInfoRequestMessage::playerid_size() const {
return playerid_.size();
}
inline void PlayerInfoRequestMessage::clear_playerid() {
playerid_ = 0u;
clear_has_playerid();
playerid_.Clear();
}
inline ::google::protobuf::uint32 PlayerInfoRequestMessage::playerid() const {
inline ::google::protobuf::uint32 PlayerInfoRequestMessage::playerid(int index) const {
return playerid_.Get(index);
}
inline void PlayerInfoRequestMessage::set_playerid(int index, ::google::protobuf::uint32 value) {
playerid_.Set(index, value);
}
inline void PlayerInfoRequestMessage::add_playerid(::google::protobuf::uint32 value) {
playerid_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
PlayerInfoRequestMessage::playerid() const {
return playerid_;
}
inline void PlayerInfoRequestMessage::set_playerid(::google::protobuf::uint32 value) {
set_has_playerid();
playerid_ = value;
inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
PlayerInfoRequestMessage::mutable_playerid() {
return &playerid_;
}
// -------------------------------------------------------------------
File diff suppressed because it is too large Load Diff
+14 -3
View File
@@ -21,7 +21,9 @@ import java.net.Socket;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
@@ -36,8 +38,14 @@ import de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType;
public class PlayerInfoTest extends TestBase {
protected void sendPlayerInfoRequest(Socket s, int playerId) throws Exception {
Collection<Integer> tmpList = new ArrayList<Integer>();
tmpList.add(playerId);
sendPlayerInfoRequest(s, tmpList);
}
protected void sendPlayerInfoRequest(Socket s, Collection<Integer> playerIds) throws Exception {
PlayerInfoRequestMessage request = PlayerInfoRequestMessage.newBuilder()
.setPlayerId(playerId)
.addAllPlayerId(playerIds)
.build();
PokerTHMessage msg = PokerTHMessage.newBuilder()
.setMessageType(PokerTHMessageType.Type_PlayerInfoRequestMessage)
@@ -96,9 +104,12 @@ public class PlayerInfoTest extends TestBase {
assertEquals(NetPlayerInfoRights.netPlayerRightsGuest, info.getPlayerRights());
assertFalse(info.hasAvatarData());
}
// Request other players' info.
// Request other players' info (one request containing 9 queries).
Collection<Integer> tmpList = new ArrayList<Integer>();
for (Integer id : playerId) { tmpList.add(id); }
sendPlayerInfoRequest(sock, tmpList);
for (int i = 0; i < 9; i++) {
sendPlayerInfoRequest(sock, playerId[i]);
do {
msg = receiveMessage();
} while (msg.hasPlayerListMessage());