/*======================================================================================================================= // »ç¿ë¹ý ¿¹Á¦) // 2006.12.12 // Sun / Server / ±èâÇö / shogen //Include ÇØ¾ß ÇÒ Å¬·¡½ºµé #include #include #include #include #include #include #include #include #include #include void PrintBaseData(BaseLogData* pObj); fpos_t ReadLog( CWriteLogMng& LogMgr, DWORD dwCount ); int main() { CWriteLogMng LogMgr; if(!(LogMgr.Open("SUN_FIELD__Date_20061218.wzl")) ) { //¿¡·¯¸Þ¼¼Áö ó¸® //-ÆÄÀÏÀÌ ¾øÀ» °æ¿ì //-·Î±×¸Þ´ÏÀúÀÇ Open()ÇÔ¼ö È£Ãâ ÈÄ Close ÇÏÁö ¾ÊÀº °æ¿ì return 0; } fpos_t Offset; //10 ¸¸Å­¸¸ Ãâ·ÂÈÄ ¿ÀÇÁ¼Â ¹Ýȯ cout << "/*10°³¸¸ Ãâ·Â*/" << endl; Offset = ReadLog(LogMgr, 10); //´Ù½Ã óÀ½ºÎÅÍ Ãâ·ÂµÇ´ÂÁö Test cout << "/*óÀ½ºÎÅÍ Ãâ·ÂµÇ´ÂÁö Test*/" << endl; LogMgr.SetLogFileOffset(0); ReadLog(LogMgr, 5); //ù¹øÂ°¿¡¼­ ¹ÞÀº ¿ÀÇÁ¼Â ÀÌÈÄ·Î Ãâ·ÂµÇ´ÂÁö Test cout << "óÀ½¿¡ 10°³ Ãâ·Â ÈÄ ¹ÝȯµÈ ¿ÀÇÁ¼ÂºÎÅÍ Ãâ·Â" << endl; LogMgr.SetLogFileOffset(Offset); ReadLog(LogMgr, 25); //»ç¿ë ÈÄ ¹Ýµå½Ã Close¸¦ È£ÃâÇØ ÁÖ¼¼¿ä/ //Open ÇÏÁöµµ ¾Ê°í CloseÈ£Ã⠽à ¹Ýȯ°ªÀº FALSEÀÔ´Ï´Ù. LogMgr.Close(); return 0; } //BaseDat¸¦ Ãâ·ÁÇÏ´Â ÇÔ¼ö void PrintBaseData(BaseLogData* pObj) { cout << "BaseWriteTime:\t" << pObj->GetWriteTime() << endl; cout << "BaseID:\t" << pObj->GetAccountID() << endl; cout << "BaseName:\t" << pObj->GetCharName() << endl; cout << "BaseIP:\t" << pObj->GetUserIP() << endl; } //dwCount ¸¸Å­¸¸ Ãâ·ÂÈÄ ¿ÀÇÁ¼Â ¹Ýȯ fpos_t ReadLog( CWriteLogMng& LogMgr, DWORD dwCount ) { DWORD dwCnt = 0; //BaseLogData Ŭ·¡½º°¡ ºÎ¸ð Ŭ·¡½ºÀÌ¸ç ¸ðµç DataŬ·¡½º´Â ÀÌ Å¬·¡½º¸¦ »ó¼Ó BaseLogData* pObj; //¹Ýȯ°ªÀÌ NULLÀ϶§ ±îÁö ·çÇÁ¸¦ µ¹¸é¼­ Object¸¦ ¾ò´Â´Ù. while( (pObj = LogMgr.Read()) != NULL ) { //Ä«Å×°í¸®¸¦ ¾ò¾î ±× Á¾·ùº°·Î ŸÀÔ Ä³½ºÆÃÀ» ÅëÇÏ¿© »ç¿ë //DataµéÀº Get MethodµéÀ» ÅëÇÏ¿© ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. //Test·Î Ãâ·ÂÇØ º¸¾Ò½À´Ï´Ù. dwCnt++; switch(pObj->GetCategory()) { case LOG_SESSION: cout << "Category:\t" << "LOG_SESSION" << endl; PrintBaseData(pObj); cout << "LogType:\t" << ((SessionData*)pObj)->GetLogType() << endl; cout << "LoginTime:\t" << ((SessionData*)pObj)->GetLoginTime() << endl; cout << "UsedTime:\t" << ((SessionData*)pObj)->GetUsedTime() << endl; break; case LOG_ITEM: cout << "Category:\t" << "LOG_ITEM" << endl; PrintBaseData(pObj); cout << "MapCode:\t" << ((ItemData*)pObj)->GetMapCode() <GetMapX() << endl; cout << "MapY:\t" << ((ItemData*)pObj)->GetMapY() << endl; cout << "MapZ:\t" << ((ItemData*)pObj)->GetMapZ() << endl; cout << "AccountID:\t" << ((ItemData*)pObj)->GetToAccountID() << endl; cout << "Name:\t" << ((ItemData*)pObj)->GetToCharName() << endl; cout << "ItemSerial:\t" << ((ItemData*)pObj)->GetItemSerial() << endl; cout << "ItemCode:\t" << ((ItemData*)pObj)->GetItemCode() << endl; cout << "ItemNum:\t" << (int)((ItemData*)pObj)->GetItemNum() << endl; cout << "ItemVersion:\t" << ((ItemData*)pObj)->GetItemStreamVersion() << endl; break; case LOG_EXP: cout << "Category:\t" << "LOG_EXP" << endl; PrintBaseData(pObj); cout << "NewLevel:\t" << ((ExpData*)pObj)->GetNewLevel() <GetOldLevel() <GetNewExp() <GetOldExp() <GetDivideCount() <GetMapCode() << endl; cout << "MapX:\t" << ((ActionData*)pObj)->GetMapX() << endl; cout << "MapY:\t" << ((ActionData*)pObj)->GetMapY() << endl; cout << "MapZ:\t" << ((ActionData*)pObj)->GetMapZ() << endl; break; case LOG_SKILL: cout << "Category:\t" << "LOG_SKILL" << endl; PrintBaseData(pObj); cout << "SkillLevel:\t" << ((SkillData*)pObj)->GetSkillLevel() << endl; cout << "SkillUseCnt:\t" << ((SkillData*)pObj)->GetSkillUseCnt() << endl; break; case LOG_SNAPSHOT: switch(pObj->GetLogType()) { case SNAPSHOT_REGULAR: cout << "Category:\t" << "LOG_SNAPSHOT" << endl; PrintBaseData(pObj); cout << "ItemBinaryVersion:\t" << ((SnapShotData*)pObj)->GetItemBinaryVersion() << endl; cout << "BasePlayerInfoVersion:\t" << ((SnapShotData*)pObj)->GetBasePlayerInfoBinaryVersion() << endl; break; case SNAPSHOT_WAREHOUSE_OEPN: case SNAPSHOT_WAREHOUSE_CLOSE: cout << "Category:\t" << "LOG_SNAPSHOT" << endl; PrintBaseData(pObj); cout << "ItemBinaryVersion:\t" << ((WareHouseData*)pObj)->GetItemBinaryVersion() << endl; break; } break; case LOG_CHAT: cout << "Category:\t" << "LOG_CHAT" << endl; PrintBaseData(pObj); cout << "Channel:\t" << ((ChatData*)pObj)->GetChannel() << endl; cout << "UserGuid:\t" << ((ChatData*)pObj)->GetUserGuid() << endl; cout << "ListenUserGuid:\t" << ((ChatData*)pObj)->GetListenUserGuid() << endl; cout << "ListenName:\t" << ((ChatData*)pObj)->GetListenCharName() << endl; cout << "Context:\t" << ((ChatData*)pObj)->GetContext() << endl; cout << "MapCode:\t" << ((ChatData*)pObj)->GetMapCode() << endl; cout << "RoonNo:\t" << ((ChatData*)pObj)->GetRoomNo() << endl; break; case LOG_EVENT: break; case LOG_ADMIN: cout << "Category:\t" << "LOG_ADMIN" << endl; PrintBaseData(pObj); cout << "MapCode:\t" << ((AdminData*)pObj)->GetMapCode() << endl; cout << "MapX:\t" << ((AdminData*)pObj)->GetMapX() << endl; cout << "MapY:\t" << ((AdminData*)pObj)->GetMapY() << endl; cout << "MapZ:\t" << ((AdminData*)pObj)->GetMapZ() << endl; cout << "CharName:\t" << ((AdminData*)pObj)->GetToCharName() << endl; break; case LOG_MONEY: cout << "Category:\t" << "LOG_MONEY" << endl; PrintBaseData(pObj); cout << "MapCode:\t" << ((MoneyData*)pObj)->GetMapCode() << endl; cout << "MapX:\t" << ((MoneyData*)pObj)->GetMapX() << endl; cout << "MapY:\t" << ((MoneyData*)pObj)->GetMapY() << endl; cout << "MapZ:\t" << ((MoneyData*)pObj)->GetMapZ() << endl; cout << "ToAccountID:\t" << ((MoneyData*)pObj)->GetToAccoundID() << endl; cout << "ToCharName:\t" << ((MoneyData*)pObj)->GetToCharName() << endl; cout << "Money:\t" << ((MoneyData*)pObj)->GetMoney() << endl; cout << "ToMoney:\t" << ((MoneyData*)pObj)->GetToMoney() << endl; cout << "RoomKey:\t" << ((MoneyData*)pObj)->GetRoomKey() << endl; break; default: return NULL; } cout << "/////////////////////////////////////////////////////////////////////////" << endl; //getch(); if(dwCnt == dwCount) return LogMgr.GetLogFileOffset(); } return 0; } /*//Ãß°¡ //06³â 12¿ù 14ÀÏ - ÀÌÁ¾°ï¾¾ÀÇ ¿äûÀ¸·Î ±èâÇö Ãß°¡ //µÎ ¸Þ¼Òµå ¸ðµå Open() ÈÄ¿¡ »ç¿ëÇÏ¿©¾ß ÇÑ´Ù. //±×·¸Áö ¾ÊÀ» °æ¿ì // - SetLogFileOffset()Àº FALSE ¹Ýȯ // - GetLogFileOffset()Àº ÆÄÀÏÀÇ Ã³À½À» °¡¸£Å°´Â 0À» ¹Ýȯ BOOL SetLogFileOffset(fpos_t Pos); fpos_t GetLogFileOffset(); //06³â 12¿ù 18ÀÏ // - SnapShot ·Î±× ³²±æ ½Ã ¹öÀü Ãß°¡( BASE_PLAYERINFO, INVENTORY °ü·Ã ) DWORD m_ItemBinaryVersion; - GetItemBinaryVersion(); DWORD m_BasePlayerInfoBinaryVersion; - GetBasePlayerInfoBinaryVersion(); // - ItemData ·Î±× ³²±æ ½Ã ¹öÀü Ãß°¡( ItemStream ) DWORD m_ItemStreamVersion; - GetItemStreamVersion();