From: Anders R. <ma...@us...> - 2005-12-02 13:27:04
|
Update of /cvsroot/planeshift/planeshift/src/common/net In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17330/src/common/net Modified Files: messages.cpp messages.h msghandler.cpp netbase.cpp Log Message: - Fixed bug #790 where statDR dirty flags where cleared when the statDR was sent to a client that targeted a client. When the statDR than should be sent to the client the dirty flag was clear so no statDR was sent. Now forceing sending HP/HP_RATE to clients that target another player. - Created a message logging system. By setting LOG_MESSAGE every message sent and received are logged. This helped very much in finding the #790 bug. Atm only the statDR message have a implemented ToString function. All other messages are dumpt in hex. Not very usefull but you see that the message go and when you need information from that message you only have to create a ToString function and add insansiating of the message in the LogMessages function in the messages.cpp file. System have been created so that a minimum of CPU is used if LOG_MESSAGE isn't turned on. Index: messages.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/common/net/messages.cpp,v retrieving revision 1.321 retrieving revision 1.322 diff -C2 -d -r1.321 -r1.322 *** messages.cpp 1 Dec 2005 22:09:32 -0000 1.321 --- messages.cpp 2 Dec 2005 13:26:53 -0000 1.322 *************** *** 36,39 **** --- 36,40 ---- #include "util/log.h" #include "net/msghandler.h" + #include "engine/drmessage.h" MsgHandler *psMessageCracker::msghandler; *************** *** 4061,4064 **** --- 4062,4075 ---- case MSGTYPEGUILDCHANGE: return "MSGTYPEGUILDCHANGE"; case MSGTYPEGROUPCHANGE: return "MSGTYPEGROUPCHANGE"; + case MSGTYPEMAPACTION: return "MSGTYPEMAPACTION"; + case MSGTYPERESENDMSGSTR: return "MSGTYPERESENDMSGSTR"; + + // Movement + case MSGTYPESPEEDMODIFIER: return "MSGTYPESPEEDMODIFIER"; + case MSGTYPEMOVEMENT: return "MSGTYPEMOVEMENT"; + case MSGTYPEMOVEMENTVARIANTS: return "MSGTYPEMOVEMENTVARIANTS"; + case MSGTYPEREQUESTMOVEMENT: return "MSGTYPEREQUESTMOVEMENT"; + case MSGTYPEMOVEMENTEXTRAUPDATE: return "MSGTYPEMOVEMENTEXTRAUPDATE"; + case MSGTYPEMOVEMENTACTIVE: return "MSGTYPEMOVEMENTACTIVE"; case MSGTYPEPING: return "MSGTYPEPING"; case MSGTYPELOCKPICK: return "MSGTYPELOCKPICK"; *************** *** 4084,4092 **** case MSGTYPE_TARGET_EVENT: return "MSGTYPE_TARGET_EVENT"; case MSGTYPE_ZPOINT_EVENT: return "MSGTYPE_ZPOINT"; ! case MSGTYPEMAPACTION: return "MSGTYPEMAPACTION"; case MSG_CHARCREATE_TRAITS: return "MSG_CHARCREATE_TRAITS"; ! case MSGTYPEMOVEMENT: return "MSGTYPEMOVEMENT"; ! case MSGTYPESPEEDMODIFIER: return "MSGTYPESPEEDMODIFIER"; ! case MSGTYPEMOVEMENTEXTRAUPDATE: return "MSGTYPEMOVEMENTEXTRAUPDATE"; case MSG_MARRIAGE_PROPOSE: return "MSG_MARRIAGE_PROPOSE"; case MSG_MARRIAGE_DIVORCE: return "MSG_MARRIAGE_DIVORCE"; --- 4095,4106 ---- case MSGTYPE_TARGET_EVENT: return "MSGTYPE_TARGET_EVENT"; case MSGTYPE_ZPOINT_EVENT: return "MSGTYPE_ZPOINT"; ! case MSGTYPE_BUY_EVENT: return "MSGTYPE_BUY_EVENT"; ! case MSGTYPE_SELL_EVENT: return "MSGTYPE_SELL_EVENT"; ! case MSGTYPE_SOUND_EVENT: return "MSGTYPE_SOUND_EVENT"; case MSG_CHARCREATE_TRAITS: return "MSG_CHARCREATE_TRAITS"; ! case MSG_TYPE_STATS: return "MSG_TYPE_STATS"; ! case MSGTYPE_NPC_SETOWNER: return "MSGTYPE_NPC_SETOWNER"; ! case MSGTYPE_PET_COMMAND: return "MSGTYPE_PET_COMMAND"; ! case MSGTYPE_PET_SKILL: return "MSGTYPE_PET_SKILL"; case MSG_MARRIAGE_PROPOSE: return "MSG_MARRIAGE_PROPOSE"; case MSG_MARRIAGE_DIVORCE: return "MSG_MARRIAGE_DIVORCE"; *************** *** 4096,4097 **** --- 4110,4156 ---- } } + + csString GetDecodedMessage(MsgEntry* me) + { + csString msgtext; + MsgEntry msg(me); // Take a copy to make sure we dont destroy the message. + // Can't do this const since current pointers are modified + // when parsing messages. + psMessageCracker * cracker = NULL; + + + msgtext.AppendFmt("%7d %-30s %8d %4d",csGetTicks(), + GetMsgTypeName(me->bytes->type).GetDataSafe(), + me->clientnum,me->bytes->size); + + + switch (me->bytes->type){ + case MSGTYPESTATDRUPDATE: cracker = new psStatDRMessage(&msg); break; + } + + if (cracker) + { + msgtext.Append(" = "); + msgtext.Append(cracker->ToString()); + + delete cracker; + } + else + { + msgtext.Append(" : "); + size_t size = me->bytes->GetSize(); + + for (int i = 0; i < size; i++) + { + msgtext.AppendFmt(" %02X",(unsigned char)me->bytes->payload[i]); + } + } + return msgtext; + } + + void LogMessages(char * dir,MsgEntry* me) + { + if (DoLogDebug(LOG_MESSAGES)) + Debug3(LOG_MESSAGES,"%s: %s\n",dir,GetDecodedMessage(me).GetData()); + } + Index: messages.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/common/net/messages.h,v retrieving revision 1.315 retrieving revision 1.316 diff -C2 -d -r1.315 -r1.316 *** messages.h 1 Dec 2005 22:09:32 -0000 1.315 --- messages.h 2 Dec 2005 13:26:53 -0000 1.316 *************** *** 85,89 **** MSGTYPECHAT, MSGTYPEGUILDCMD, ! MSGTYPEUSERCMD, MSGTYPESYSTEM, MSGTYPECHARREJECT, --- 85,89 ---- MSGTYPECHAT, MSGTYPEGUILDCMD, ! MSGTYPEUSERCMD, // 10 MSGTYPESYSTEM, MSGTYPECHARREJECT, *************** *** 95,99 **** MSGTYPEGUIINTERACT, MSGTYPEGUIINVENTORY, ! MSG_TYPE_VIEW_ITEM, MSG_TYPE_VIEW_CONTAINER, MSG_TYPE_READ_BOOK, --- 95,99 ---- MSGTYPEGUIINTERACT, MSGTYPEGUIINVENTORY, ! MSG_TYPE_VIEW_ITEM, // 20 MSG_TYPE_VIEW_CONTAINER, MSG_TYPE_READ_BOOK, *************** *** 105,109 **** MSGTYPEGUIGUILD, MSGTYPEEQUIPMENT, ! MSGTYPEGUIEXCHANGE, MSG_TYPE_EXCHANGE_REQUEST, MSG_TYPE_EXCHANGE_ADD_ITEM, --- 105,109 ---- MSGTYPEGUIGUILD, MSGTYPEEQUIPMENT, ! MSGTYPEGUIEXCHANGE, // 30 MSG_TYPE_EXCHANGE_REQUEST, MSG_TYPE_EXCHANGE_ADD_ITEM, *************** *** 115,119 **** MSGTYPEGUIMERCHANT, MSGTYPEGROUPCMD, ! MSGTYPEGUIGROUP, MSGTYPESTATDRUPDATE, MSG_TYPE_SPELL_BOOK, --- 115,119 ---- MSGTYPEGUIMERCHANT, MSGTYPEGROUPCMD, ! MSGTYPEGUIGROUP, // 40 MSGTYPESTATDRUPDATE, MSG_TYPE_SPELL_BOOK, *************** *** 125,129 **** MSG_TYPE_SPELL_CANCEL, MSGTYPEEFFECT, ! MSGTYPENPCAUTHENT, MSGTYPENPCLIST, MSGTYPEGUITARGETUPDATE, --- 125,129 ---- MSG_TYPE_SPELL_CANCEL, MSGTYPEEFFECT, ! MSGTYPENPCAUTHENT, // 50 MSGTYPENPCLIST, MSGTYPEGUITARGETUPDATE, *************** *** 135,139 **** MSGTYPEMSGSTRINGS, MSGTYPECHARACTERDATA, ! MSGTYPEAUTHCHARACTER, MSGTYPEAUTHCHARACTERAPPROVED, MSG_CHARCREATE_CP, --- 135,139 ---- MSGTYPEMSGSTRINGS, MSGTYPECHARACTERDATA, ! MSGTYPEAUTHCHARACTER, // 60 MSGTYPEAUTHCHARACTERAPPROVED, MSG_CHARCREATE_CP, *************** *** 145,149 **** MSGTYPEOVERRIDEACTION, MSGTYPEQUESTLIST, ! MSGTYPEQUESTINFO, MSGTYPEGMGUI, MSGTYPEWORKCMD, --- 145,149 ---- MSGTYPEOVERRIDEACTION, MSGTYPEQUESTLIST, ! MSGTYPEQUESTINFO, // 70 MSGTYPEGMGUI, MSGTYPEWORKCMD, *************** *** 155,159 **** MSGTYPEQUESTIONRESPONSE, MSG_TYPE_SLOT_MOVEMENT, ! MSGTYPEQUESTIONCANCEL, MSGTYPEGUILDMOTDSET, MSGTYPEPLAYSOUND, --- 155,159 ---- MSGTYPEQUESTIONRESPONSE, MSG_TYPE_SLOT_MOVEMENT, ! MSGTYPEQUESTIONCANCEL, // 80 MSGTYPEGUILDMOTDSET, MSGTYPEPLAYSOUND, *************** *** 165,169 **** MSGTYPEGUILDCHANGE, MSGTYPEPING, ! MSGTYPELOCKPICK, MSGTYPEGMSPAWNITEMS, MSGTYPEGMSPAWNTYPES, --- 165,169 ---- MSGTYPEGUILDCHANGE, MSGTYPEPING, ! MSGTYPELOCKPICK, // 90 MSGTYPEGMSPAWNITEMS, MSGTYPEGMSPAWNTYPES, *************** *** 177,181 **** // Movement MSGTYPESPEEDMODIFIER, ! MSGTYPEMOVEMENT, MSGTYPEMOVEMENTVARIANTS, MSGTYPEREQUESTMOVEMENT, --- 177,181 ---- // Movement MSGTYPESPEEDMODIFIER, ! MSGTYPEMOVEMENT, // 100 MSGTYPEMOVEMENTVARIANTS, MSGTYPEREQUESTMOVEMENT, *************** *** 189,193 **** MSG_CHARCREATE_LIFEEVENTS, MSG_CHARCREATE_UPLOAD, ! MSG_CHARCREATE_VERIFY, MSG_CHARCREATE_NAME, MSG_PERSIST_WORLD, --- 189,193 ---- MSG_CHARCREATE_LIFEEVENTS, MSG_CHARCREATE_UPLOAD, ! MSG_CHARCREATE_VERIFY, // 110 MSG_CHARCREATE_NAME, MSG_PERSIST_WORLD, *************** *** 201,205 **** // Internal Server Events here MSGTYPE_DAMAGE_EVENT, ! MSGTYPE_DEATH_EVENT, MSGTYPE_TARGET_EVENT, MSGTYPE_ZPOINT_EVENT, --- 201,205 ---- // Internal Server Events here MSGTYPE_DAMAGE_EVENT, ! MSGTYPE_DEATH_EVENT, // 120 MSGTYPE_TARGET_EVENT, MSGTYPE_ZPOINT_EVENT, *************** *** 217,221 **** MSGTYPE_NPC_SETOWNER, MSGTYPE_PET_COMMAND, ! MSGTYPE_PET_SKILL, // Marriage related messages --- 217,221 ---- MSGTYPE_NPC_SETOWNER, MSGTYPE_PET_COMMAND, ! MSGTYPE_PET_SKILL, // 130 // Marriage related messages *************** *** 229,232 **** --- 229,239 ---- csString GetMsgTypeName(int msgType); + /** + * Log the message to LOG_MESSAGE. + * + * @param dir Should be R for received messages, S for sent messages and I for internal. + */ + void LogMessages(char * dir, MsgEntry* me); + // Types of system messages #define MSG_ERROR 0x00000000 // Used for stuff that failed (By default, OnScreen Red) *************** *** 278,282 **** { } ! ~psMessageCracker() { if (msg) --- 285,289 ---- { } ! virtual ~psMessageCracker() { if (msg) *************** *** 291,294 **** --- 298,310 ---- void Multicast(PublishVector& multi, int except, float range); void FireEvent(); + + /** + * Used when a message is Logged. Every message should implement a + * version of this function that print all data that was decoded + * when the message was initiated from a NetEntry. See psDRMessage::ToString + * for an example. + * @return Return a human readable string for the message. + */ + virtual csString ToString() { return "Not implemented"; } }; *************** *** 1417,1421 **** psRequestGlyphsMessage( uint32_t client = 0 ); psRequestGlyphsMessage( MsgEntry* me ); ! ~psRequestGlyphsMessage(); void AddGlyph( csString name, csString image, int count, int purifiedStatus, --- 1433,1437 ---- psRequestGlyphsMessage( uint32_t client = 0 ); psRequestGlyphsMessage( MsgEntry* me ); ! virtual ~psRequestGlyphsMessage(); void AddGlyph( csString name, csString image, int count, int purifiedStatus, Index: msghandler.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/common/net/msghandler.cpp,v retrieving revision 1.60 retrieving revision 1.61 diff -C2 -d -r1.60 -r1.61 *** msghandler.cpp 17 Jun 2005 14:09:51 -0000 1.60 --- msghandler.cpp 2 Dec 2005 13:26:53 -0000 1.61 *************** *** 20,23 **** --- 20,24 ---- #include "util/sleep.h" #include "net/message.h" + #include "net/messages.h" #include "net/netbase.h" #include "net/msghandler.h" *************** *** 85,88 **** --- 86,91 ---- { csScopedMutexLock lock(mutex); + + LogMessages("R",me); bool handled = false; Index: netbase.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/common/net/netbase.cpp,v retrieving revision 1.145 retrieving revision 1.146 diff -C2 -d -r1.145 -r1.146 *** netbase.cpp 1 Dec 2005 22:09:32 -0000 1.145 --- netbase.cpp 2 Dec 2005 13:26:53 -0000 1.146 *************** *** 625,629 **** { profs->AddSentMsg(me); ! size_t bytesleft = me->bytes->GetTotalSize(); size_t offset = 0; --- 625,629 ---- { profs->AddSentMsg(me); ! size_t bytesleft = me->bytes->GetTotalSize(); size_t offset = 0; *************** *** 634,637 **** --- 634,639 ---- uint32_t id = GetRandomID(); + LogMessages("S",me); + while (bytesleft > 0) { |