From 710affb1e56b14bfb32aed8e7f88185dd8b5fdaf Mon Sep 17 00:00:00 2001 From: lotodore Date: Fri, 24 Dec 2010 12:27:46 +0000 Subject: [PATCH] Preparing the use of the report bad avatar function. --- src/gui/qt/gametable/myavatarlabel.cpp | 2 +- src/net/clientthread.h | 1 + src/net/common/clientthread.cpp | 19 +++++++++++++++++++ src/net/common/servergamestate.cpp | 4 ++++ src/session.cpp | 7 +++++++ src/session.h | 2 ++ 6 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/gui/qt/gametable/myavatarlabel.cpp b/src/gui/qt/gametable/myavatarlabel.cpp index 5328daee..417415a9 100644 --- a/src/gui/qt/gametable/myavatarlabel.cpp +++ b/src/gui/qt/gametable/myavatarlabel.cpp @@ -206,7 +206,7 @@ void MyAvatarLabel::reportBadAvatar() { QMessageBox::Yes | QMessageBox::No); if(ret) { QFileInfo fi(avatar); - // tue_irgendwas_in_session(myId, fi.baseName()); + myW->getSession()->reportBadAvatar(myId, fi.baseName().toStdString()); } } break; diff --git a/src/net/clientthread.h b/src/net/clientthread.h index 0218601f..7041cf76 100644 --- a/src/net/clientthread.h +++ b/src/net/clientthread.h @@ -82,6 +82,7 @@ public: void SendShowMyCards(); void SendInvitePlayerToCurrentGame(unsigned playerId); void SendRejectGameInvitation(unsigned gameId, DenyGameInvitationReason reason); + void SendReportAvatar(unsigned reportedPlayerId, const std::string &avatarHash); void StartAsyncRead(); void HandleRead(const boost::system::error_code& ec, size_t bytesRead); diff --git a/src/net/common/clientthread.cpp b/src/net/common/clientthread.cpp index 06d13600..62448c09 100644 --- a/src/net/common/clientthread.cpp +++ b/src/net/common/clientthread.cpp @@ -361,6 +361,25 @@ ClientThread::SendRejectGameInvitation(unsigned gameId, DenyGameInvitationReason m_ioService->post(boost::bind(&ClientThread::SendSessionPacket, shared_from_this(), packet)); } +void +ClientThread::SendReportAvatar(unsigned reportedPlayerId, const std::string &avatarHash) +{ + boost::shared_ptr packet(new NetPacket(NetPacket::Alloc)); + packet->GetMsg()->present = PokerTHMessage_PR_reportAvatarMessage; + ReportAvatarMessage_t *netReport = &packet->GetMsg()->choice.reportAvatarMessage; + netReport->reportedPlayerId = reportedPlayerId; + MD5Buf tmpMD5; + if (tmpMD5.FromString(avatarHash) && !tmpMD5.IsZero()) + { + OCTET_STRING_fromBuf( + &netReport->reportedAvatar, + (const char *)tmpMD5.GetData(), + MD5_DATA_SIZE); + + m_ioService->post(boost::bind(&ClientThread::SendSessionPacket, shared_from_this(), packet)); + } +} + void ClientThread::StartAsyncRead() { diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index f67b9737..e8cd4666 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -304,6 +304,10 @@ AbstractServerGameStateReceiving::ProcessPacket(boost::shared_ptr se else session.sessionData->ResetWantsLobbyMsg(); } + else if (packet->GetMsg()->present == PokerTHMessage_PR_reportAvatarMessage) + { + ReportAvatarMessage_t *netReport = &packet->GetMsg()->choice.reportAvatarMessage; + } else { // Packet processing in subclass. diff --git a/src/session.cpp b/src/session.cpp index 094a7d26..5c1ff34a 100755 --- a/src/session.cpp +++ b/src/session.cpp @@ -457,6 +457,13 @@ void myNetClient->SendRejectGameInvitation(gameId, reason); } +void Session::reportBadAvatar(unsigned reportedPlayerId, const std::string &avatarHash) +{ + if (!myNetClient) + return; // only act if client is running. + myNetClient->SendReportAvatar(reportedPlayerId, avatarHash); +} + void Session::voteKick(bool doKick) { if (!myNetClient) diff --git a/src/session.h b/src/session.h index dcad002b..ed176765 100755 --- a/src/session.h +++ b/src/session.h @@ -95,6 +95,8 @@ public: void acceptGameInvitation(unsigned gameId); void rejectGameInvitation(unsigned gameId, DenyGameInvitationReason reason); + void reportBadAvatar(unsigned reportedPlayerId, const std::string &avatarHash); + void resetNetworkTimeout(); bool isNetworkClientRunning() const; // TODO hack