From b6a25c8212ba71e6d7c68653548d0789352216ae Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Sat, 3 Nov 2012 01:23:48 +0000 Subject: [PATCH] - added some debug code for network protocol --- source/glest_game/main/main.cpp | 18 +++++++++++--- source/glest_game/network/network_message.cpp | 24 +++++++++++++++++++ source/glest_game/network/network_message.h | 17 ++++++++----- 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/source/glest_game/main/main.cpp b/source/glest_game/main/main.cpp index d85a0ef70..47be46550 100644 --- a/source/glest_game/main/main.cpp +++ b/source/glest_game/main/main.cpp @@ -73,8 +73,8 @@ #include -//#include "network_message.h" -//#include "network_protocol.h" +#include "network_message.h" +#include "network_protocol.h" #include "leak_dumper.h" #ifdef WIN32 @@ -139,7 +139,7 @@ void cleanupCRCThread() { if(SystemFlags::VERBOSE_MODE_ENABLED) printf("D - shutting down crc threads\n"); if(preCacheThread->canShutdown(false) == true) { - if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); + if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); delete preCacheThread; if(SystemFlags::VERBOSE_MODE_ENABLED) printf("E - shutting down crc threads\n"); @@ -3080,6 +3080,18 @@ int glestMain(int argc, char** argv) { printf("\nCompiled using: %s on: %s platform: %s endianness: %s",getCompilerNameString().c_str(),getCompileDateTime().c_str(),getPlatformNameString().c_str(),(Shared::PlatformByteOrder::isBigEndian() == true ? "big" : "little")); + Config::getInstance().setBool("DebugNetworkPackets",true,true); + NetworkMessageIntro data(424336, "mg_version_x","player_x", 3, nmgstOk,444444, 555555, "english"); + unsigned char *buf = data.packMessage(); + printf("\nSend packet size = %u\n%s\n",data.getPackedSize(),data.toString().c_str()); + data.dump_packet("Send data", buf, data.getPackedSize()); + //delete [] buf; + + data.unpackMessage(buf); + printf("\nReceive packet size = %u\n%s\n",data.getPackedSize(),data.toString().c_str()); + data.dump_packet("nReceive data", buf, data.getPackedSize()); + delete [] buf; + // SwitchSetupRequest data("factionname", 3,-1,2,"softcoder",10, 11,"eng"); // // unsigned char *buf = data.packMessage(); diff --git a/source/glest_game/network/network_message.cpp b/source/glest_game/network/network_message.cpp index 7fd12afe0..2aba61d53 100644 --- a/source/glest_game/network/network_message.cpp +++ b/source/glest_game/network/network_message.cpp @@ -180,6 +180,30 @@ unsigned char * NetworkMessageIntro::packMessage() { return buf; } +string NetworkMessageIntro::toString() const { + + int8 messageType; + int32 sessionId; + NetworkString versionString; + NetworkString name; + int16 playerIndex; + int8 gameState; + uint32 externalIp; + uint32 ftpPort; + NetworkString language; + + string result = "messageType = " + intToStr(data.messageType); + result += " sessionId = " + intToStr(data.sessionId); + result += " versionString = " + data.versionString.getString(); + result += " name = " + data.name.getString(); + result += " playerIndex = " + intToStr(data.playerIndex); + result += " gameState = " + intToStr(data.gameState); + result += " externalIp = " + uIntToStr(data.externalIp); + result += " ftpPort = " + uIntToStr(data.ftpPort); + result += " language = " + data.language.getString(); + return result; +} + bool NetworkMessageIntro::receive(Socket* socket) { bool result = false; if(useOldProtocol == true) { diff --git a/source/glest_game/network/network_message.h b/source/glest_game/network/network_message.h index a032bd7e2..82a759f27 100644 --- a/source/glest_game/network/network_message.h +++ b/source/glest_game/network/network_message.h @@ -73,13 +73,13 @@ public: virtual void send(Socket* socket) = 0; virtual size_t getDataSize() const = 0; + void dump_packet(string label, const void* data, int dataSize); + protected: //bool peek(Socket* socket, void* data, int dataSize); bool receive(Socket* socket, void* data, int dataSize,bool tryReceiveUntilDataSizeMet); void send(Socket* socket, const void* data, int dataSize); - void dump_packet(string label, const void* data, int dataSize); - virtual const char * getPackedMessageFormat() const = 0; virtual unsigned int getPackedSize() = 0; virtual void unpackMessage(unsigned char *buf) = 0; @@ -118,10 +118,6 @@ private: Data data; protected: - virtual const char * getPackedMessageFormat() const; - virtual unsigned int getPackedSize(); - virtual void unpackMessage(unsigned char *buf); - virtual unsigned char * packMessage(); public: NetworkMessageIntro(); @@ -129,6 +125,13 @@ public: const string &name, int playerIndex, NetworkGameStateType gameState, uint32 externalIp, uint32 ftpPort, const string &playerLanguage); + + virtual const char * getPackedMessageFormat() const; + virtual unsigned int getPackedSize(); + virtual void unpackMessage(unsigned char *buf); + virtual unsigned char * packMessage(); + + virtual size_t getDataSize() const { return sizeof(Data); } int32 getSessionId() const { return data.sessionId;} @@ -142,6 +145,8 @@ public: virtual bool receive(Socket* socket); virtual void send(Socket* socket); + + string toString() const; }; #pragma pack(pop)