Fixing problem with subscription request message.

This commit is contained in:
lotodore
2015-01-03 12:38:33 +01:00
parent bd981dd581
commit c24e8a3fa9
5 changed files with 41 additions and 22 deletions
+2
View File
@@ -590,6 +590,8 @@ AbstractClientStateReceiving::HandleLobbyMsg(boost::shared_ptr<ClientThread> cli
} else {
client->SetUnknownPlayer(playerId);
}
} else if (lobbyMsg.messagetype() == LobbyMessage::Type_SubscriptionReplyMessage) {
// Ignore for now.
} else if (lobbyMsg.messagetype() == LobbyMessage::Type_TimeoutWarningMessage) {
const TimeoutWarningMessage &tmpTimeout = lobbyMsg.timeoutwarningmessage();
client->GetCallback().SignalNetClientShowTimeoutDialog((NetTimeoutReason)tmpTimeout.timeoutreason(), tmpTimeout.remainingseconds());
+2
View File
@@ -1012,6 +1012,7 @@ ClientThread::UnsubscribeLobbyMsg()
LobbyMessage *netLobby = packet->GetMsg()->mutable_lobbymessage();
netLobby->set_messagetype(LobbyMessage::Type_SubscriptionRequestMessage);
SubscriptionRequestMessage *netRequest = netLobby->mutable_subscriptionrequestmessage();
netRequest->set_requestid(1);
netRequest->set_subscriptionaction(SubscriptionRequestMessage::unsubscribeGameList);
GetSender().Send(GetContext().GetSessionData(), packet);
GetContext().SetSubscribeLobbyMsg(false);
@@ -1030,6 +1031,7 @@ ClientThread::ResubscribeLobbyMsg()
LobbyMessage *netLobby = packet->GetMsg()->mutable_lobbymessage();
netLobby->set_messagetype(LobbyMessage::Type_SubscriptionRequestMessage);
SubscriptionRequestMessage *netRequest = netLobby->mutable_subscriptionrequestmessage();
netRequest->set_requestid(1);
netRequest->set_subscriptionaction(SubscriptionRequestMessage::resubscribeGameList);
GetSender().Send(GetContext().GetSessionData(), packet);
GetContext().SetSubscribeLobbyMsg(true);
+24 -21
View File
@@ -449,12 +449,6 @@ ServerLobbyThread::CloseSession(boost::shared_ptr<SessionData> session)
}
}
void
ServerLobbyThread::ResubscribeLobbyMsg(boost::shared_ptr<SessionData> session)
{
InternalResubscribeMsg(session);
}
void
ServerLobbyThread::NotifyPlayerJoinedLobby(unsigned playerId)
{
@@ -999,17 +993,13 @@ ServerLobbyThread::HandlePacket(boost::shared_ptr<SessionData> session, boost::s
SessionError(session, ERR_SOCK_INVALID_STATE);
}
} else {
if (lobbyMsg.messagetype() == LobbyMessage::Type_PlayerInfoRequestMessage)
if (lobbyMsg.messagetype() == LobbyMessage::Type_PlayerInfoRequestMessage) {
HandleNetPacketRetrievePlayerInfo(session, lobbyMsg.playerinforequestmessage());
else if (lobbyMsg.messagetype() == LobbyMessage::Type_AvatarRequestMessage)
} else if (lobbyMsg.messagetype() == LobbyMessage::Type_AvatarRequestMessage) {
HandleNetPacketRetrieveAvatar(session, lobbyMsg.avatarrequestmessage());
else if (lobbyMsg.messagetype() == LobbyMessage::Type_ResetTimeoutMessage) {
} else if (lobbyMsg.messagetype() == LobbyMessage::Type_ResetTimeoutMessage) {
} else if (lobbyMsg.messagetype() == LobbyMessage::Type_SubscriptionRequestMessage) {
const SubscriptionRequestMessage &subscriptionRequest = lobbyMsg.subscriptionrequestmessage();
if (subscriptionRequest.subscriptionaction() == SubscriptionRequestMessage::resubscribeGameList)
InternalResubscribeMsg(session);
else
session->ResetWantsLobbyMsg();
HandleNetPacketSubscriptionRequest(session, lobbyMsg.subscriptionrequestmessage());
} else if (lobbyMsg.messagetype() == LobbyMessage::Type_CreateGameMessage) {
HandleNetPacketCreateGame(session, lobbyMsg.creategamemessage());
} else if (lobbyMsg.messagetype() == LobbyMessage::Type_JoinGameMessage) {
@@ -1026,13 +1016,6 @@ ServerLobbyThread::HandlePacket(boost::shared_ptr<SessionData> session, boost::s
HandleNetPacketAdminRemoveGame(session, lobbyMsg.adminremovegamemessage());
} else if (lobbyMsg.messagetype() == LobbyMessage::Type_AdminBanPlayerMessage) {
HandleNetPacketAdminBanPlayer(session, lobbyMsg.adminbanplayermessage());
} else if (lobbyMsg.messagetype() == LobbyMessage::Type_SubscriptionRequestMessage) {
const SubscriptionRequestMessage &netSubscription = lobbyMsg.subscriptionrequestmessage();
if (netSubscription.subscriptionaction() == SubscriptionRequestMessage::resubscribeGameList) {
if (!session->WantsLobbyMsg())
ResubscribeLobbyMsg(session);
} else
session->ResetWantsLobbyMsg();
} else if (lobbyMsg.messagetype() == LobbyMessage::Type_ReportAvatarMessage) {
HandleNetPacketReportAvatar(session, lobbyMsg.reportavatarmessage());
} else {
@@ -1353,6 +1336,26 @@ ServerLobbyThread::HandleNetPacketRetrieveAvatar(boost::shared_ptr<SessionData>
}
}
void
ServerLobbyThread::HandleNetPacketSubscriptionRequest(boost::shared_ptr<SessionData> session, const SubscriptionRequestMessage &subscriptionRequest)
{
if (subscriptionRequest.subscriptionaction() == SubscriptionRequestMessage::resubscribeGameList) {
InternalResubscribeMsg(session);
} else {
session->ResetWantsLobbyMsg();
}
boost::shared_ptr<NetPacket> packet(new NetPacket);
packet->GetMsg()->set_messagetype(PokerTHMessage::Type_LobbyMessage);
LobbyMessage *netLobby = packet->GetMsg()->mutable_lobbymessage();
netLobby->set_messagetype(LobbyMessage::Type_SubscriptionReplyMessage);
SubscriptionReplyMessage *netReply = netLobby->mutable_subscriptionreplymessage();
netReply->set_requestid(subscriptionRequest.requestid());
netReply->set_ack(true);
GetSender().Send(session, packet);
}
void
ServerLobbyThread::HandleNetPacketCreateGame(boost::shared_ptr<SessionData> session, const CreateGameMessage &newGame)
{
@@ -51,6 +51,7 @@ LobbyMessageValidator::LobbyMessageValidator()
m_validationMap.insert(make_pair(LobbyMessage_LobbyMessageType_Type_PlayerInfoRequestMessage, ValidatePlayerInfoRequestMessage));
m_validationMap.insert(make_pair(LobbyMessage_LobbyMessageType_Type_PlayerInfoReplyMessage, ValidatePlayerInfoReplyMessage));
m_validationMap.insert(make_pair(LobbyMessage_LobbyMessageType_Type_SubscriptionRequestMessage, ValidateSubscriptionRequestMessage));
m_validationMap.insert(make_pair(LobbyMessage_LobbyMessageType_Type_SubscriptionReplyMessage, ValidateSubscriptionReplyMessage));
m_validationMap.insert(make_pair(LobbyMessage_LobbyMessageType_Type_CreateGameMessage, ValidateCreateGameMessage));
m_validationMap.insert(make_pair(LobbyMessage_LobbyMessageType_Type_JoinGameMessage, ValidateJoinGameMessage));
m_validationMap.insert(make_pair(LobbyMessage_LobbyMessageType_Type_RejoinGameMessage, ValidateRejoinGameMessage));
@@ -300,6 +301,17 @@ LobbyMessageValidator::ValidateSubscriptionRequestMessage(const LobbyMessage &ms
return retVal;
}
bool
LobbyMessageValidator::ValidateSubscriptionReplyMessage(const LobbyMessage &msg)
{
bool retVal = false;
if (msg.has_subscriptionreplymessage()) {
//const SubscriptionReplyMessage &subscribe = msg.subscriptionreplymessage();
retVal = true;
}
return retVal;
}
bool
LobbyMessageValidator::ValidateCreateGameMessage(const LobbyMessage &msg)
{