diff options
| author | oy <Tom_Adams@web.de> | 2011-03-05 11:46:24 +0100 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2011-03-05 11:46:24 +0100 |
| commit | 50b266086bcaac99ed3cd479a09990c54e35706a (patch) | |
| tree | e5854a880cec95cedd949103afa4531107bd1c8c /src | |
| parent | fc692d85c8d960ef4754a2bbecc658975162b9e3 (diff) | |
| download | zcatch-50b266086bcaac99ed3cd479a09990c54e35706a.tar.gz zcatch-50b266086bcaac99ed3cd479a09990c54e35706a.zip | |
made dbg_dumpmem and dbg_lognetwork work again
Diffstat (limited to 'src')
| -rw-r--r-- | src/base/system.c | 20 | ||||
| -rw-r--r-- | src/base/system.h | 2 | ||||
| -rw-r--r-- | src/engine/client/client.cpp | 1 | ||||
| -rw-r--r-- | src/engine/engine.h | 1 | ||||
| -rw-r--r-- | src/engine/server/server.cpp | 1 | ||||
| -rw-r--r-- | src/engine/shared/engine.cpp | 55 | ||||
| -rw-r--r-- | src/engine/shared/network.cpp | 46 | ||||
| -rw-r--r-- | src/engine/shared/network.h | 3 |
8 files changed, 94 insertions, 35 deletions
diff --git a/src/base/system.c b/src/base/system.c index 0f0aaf70..c0b8edec 100644 --- a/src/base/system.c +++ b/src/base/system.c @@ -210,20 +210,24 @@ void mem_free(void *p) } } -void mem_debug_dump() +void mem_debug_dump(IOHANDLE file) { char buf[1024]; MEMHEADER *header = first; - IOHANDLE f = io_open("memory.txt", IOFLAG_WRITE); + if(!file) + file = io_open("memory.txt", IOFLAG_WRITE); - while(header) + if(file) { - str_format(buf, sizeof(buf), "%s(%d): %d\n", header->filename, header->line, header->size); - io_write(f, buf, strlen(buf)); - header = header->next; - } + while(header) + { + str_format(buf, sizeof(buf), "%s(%d): %d\n", header->filename, header->line, header->size); + io_write(file, buf, strlen(buf)); + header = header->next; + } - io_close(f); + io_close(file); + } } diff --git a/src/base/system.h b/src/base/system.h index 725f3008..ed46cef7 100644 --- a/src/base/system.h +++ b/src/base/system.h @@ -1090,7 +1090,7 @@ int net_would_block(); int net_socket_read_wait(NETSOCKET sock, int time); -void mem_debug_dump(); +void mem_debug_dump(IOHANDLE file); void swap_endian(void *data, unsigned elem_size, unsigned num); diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp index 60a2cf12..125991c1 100644 --- a/src/engine/client/client.cpp +++ b/src/engine/client/client.cpp @@ -2328,6 +2328,7 @@ int main(int argc, const char **argv) // ignore_convention return -1; } + pEngine->Init(); pConfig->Init(); pEngineMasterServer->Init(); pEngineMasterServer->Load(); diff --git a/src/engine/engine.h b/src/engine/engine.h index 725ef4f6..c439c4ee 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -22,6 +22,7 @@ protected: class CJobPool m_JobPool; public: + virtual void Init() = 0; virtual void InitLogfile() = 0; virtual void HostLookup(CHostLookup *pLookup, const char *pHostname) = 0; virtual void AddJob(CJob *pJob, JOBFUNC pfnFunc, void *pData) = 0; diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp index bd6f9829..39e63b42 100644 --- a/src/engine/server/server.cpp +++ b/src/engine/server/server.cpp @@ -1499,6 +1499,7 @@ int main(int argc, const char **argv) // ignore_convention return -1; } + pEngine->Init(); pConfig->Init(); pEngineMasterServer->Init(); pEngineMasterServer->Load(); diff --git a/src/engine/shared/engine.cpp b/src/engine/shared/engine.cpp index 0fa0a81a..6839cc64 100644 --- a/src/engine/shared/engine.cpp +++ b/src/engine/shared/engine.cpp @@ -3,10 +3,11 @@ #include <base/system.h> +#include <engine/console.h> #include <engine/engine.h> +#include <engine/storage.h> #include <engine/shared/config.h> #include <engine/shared/network.h> -#include <engine/console.h> static int HostLookupThread(void *pUser) @@ -19,16 +20,41 @@ static int HostLookupThread(void *pUser) class CEngine : public IEngine { public: - /* - static void con_dbg_dumpmem(IConsole::IResult *result, void *user_data) + IConsole *m_pConsole; + IStorage *m_pStorage; + bool m_Logging; + + static void Con_DbgDumpmem(IConsole::IResult *pResult, void *pUserData) { - mem_debug_dump(); + CEngine *pEngine = static_cast<CEngine *>(pUserData); + char aBuf[32]; + str_timestamp(aBuf, sizeof(aBuf)); + char aFilename[128]; + str_format(aFilename, sizeof(aFilename), "dumps/memory_%s.txt", aBuf); + mem_debug_dump(pEngine->m_pStorage->OpenFile(aFilename, IOFLAG_WRITE, IStorage::TYPE_SAVE)); } - static void con_dbg_lognetwork(IConsole::IResult *result, void *user_data) + static void Con_DbgLognetwork(IConsole::IResult *pResult, void *pUserData) { - CNetBase::OpenLog("network_sent.dat", "network_recv.dat"); - }*/ + CEngine *pEngine = static_cast<CEngine *>(pUserData); + + if(pEngine->m_Logging) + { + CNetBase::CloseLog(); + pEngine->m_Logging = false; + } + else + { + char aBuf[32]; + str_timestamp(aBuf, sizeof(aBuf)); + char aFilenameSent[128], aFilenameRecv[128]; + str_format(aFilenameSent, sizeof(aFilenameSent), "dumps/network_sent_%s.txt", aBuf); + str_format(aFilenameRecv, sizeof(aFilenameRecv), "dumps/network_recv_%s.txt", aBuf); + CNetBase::OpenLog(pEngine->m_pStorage->OpenFile(aFilenameSent, IOFLAG_WRITE, IStorage::TYPE_SAVE), + pEngine->m_pStorage->OpenFile(aFilenameRecv, IOFLAG_WRITE, IStorage::TYPE_SAVE)); + pEngine->m_Logging = true; + } + } CEngine(const char *pAppname) { @@ -51,8 +77,19 @@ public: m_JobPool.Init(1); - //MACRO_REGISTER_COMMAND("dbg_dumpmem", "", CFGFLAG_SERVER|CFGFLAG_CLIENT, con_dbg_dumpmem, 0x0, "Dump the memory"); - //MACRO_REGISTER_COMMAND("dbg_lognetwork", "", CFGFLAG_SERVER|CFGFLAG_CLIENT, con_dbg_lognetwork, 0x0, "Log the network"); + m_Logging = false; + } + + void Init() + { + m_pConsole = Kernel()->RequestInterface<IConsole>(); + m_pStorage = Kernel()->RequestInterface<IStorage>(); + + if(!m_pConsole || !m_pStorage) + return; + + m_pConsole->Register("dbg_dumpmem", "", CFGFLAG_SERVER|CFGFLAG_CLIENT, Con_DbgDumpmem, this, "Dump the memory"); + m_pConsole->Register("dbg_lognetwork", "", CFGFLAG_SERVER|CFGFLAG_CLIENT, Con_DbgLognetwork, this, "Log the network"); } void InitLogfile() diff --git a/src/engine/shared/network.cpp b/src/engine/shared/network.cpp index 43c1e645..89ffae6d 100644 --- a/src/engine/shared/network.cpp +++ b/src/engine/shared/network.cpp @@ -293,26 +293,40 @@ IOHANDLE CNetBase::ms_DataLogRecv = 0; CHuffman CNetBase::ms_Huffman; -void CNetBase::OpenLog(const char *pSentLog, const char *pRecvLog) +void CNetBase::OpenLog(IOHANDLE DataLogSent, IOHANDLE DataLogRecv) { - /* - if(pSentLog) + if(DataLogSent) { - ms_DataLogSent = engine_openfile(pSentLog, IOFLAG_WRITE); - if(ms_DataLogSent) - dbg_msg("network", "logging sent packages to '%s'", pSentLog); - else - dbg_msg("network", "failed to open for logging '%s'", pSentLog); + ms_DataLogSent = DataLogSent; + dbg_msg("network", "logging sent packages"); } - - if(pRecvLog) + else + dbg_msg("network", "failed to start logging sent packages"); + + if(DataLogRecv) { - ms_DataLogRecv = engine_openfile(pRecvLog, IOFLAG_WRITE); - if(ms_DataLogRecv) - dbg_msg("network", "logging recv packages to '%s'", pRecvLog); - else - dbg_msg("network", "failed to open for logging '%s'", pRecvLog); - }*/ + ms_DataLogRecv = DataLogRecv; + dbg_msg("network", "logging recv packages"); + } + else + dbg_msg("network", "failed to start logging recv packages"); +} + +void CNetBase::CloseLog() +{ + if(ms_DataLogSent) + { + dbg_msg("network", "stopped logging sent packages"); + io_close(ms_DataLogSent); + ms_DataLogSent = 0; + } + + if(ms_DataLogRecv) + { + dbg_msg("network", "stopped logging recv packages"); + io_close(ms_DataLogRecv); + ms_DataLogRecv = 0; + } } int CNetBase::Compress(const void *pData, int DataSize, void *pOutput, int OutputSize) diff --git a/src/engine/shared/network.h b/src/engine/shared/network.h index 67175db9..0fc3f0a8 100644 --- a/src/engine/shared/network.h +++ b/src/engine/shared/network.h @@ -335,7 +335,8 @@ class CNetBase static IOHANDLE ms_DataLogRecv; static CHuffman ms_Huffman; public: - static void OpenLog(const char *pSentlog, const char *pRecvlog); + static void OpenLog(IOHANDLE DataLogSent, IOHANDLE DataLogRecv); + static void CloseLog(); static void Init(); static int Compress(const void *pData, int DataSize, void *pOutput, int OutputSize); static int Decompress(const void *pData, int DataSize, void *pOutput, int OutputSize); |