about summary refs log tree commit diff
path: root/src/engine/shared/engine.cpp
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2011-03-05 11:46:24 +0100
committeroy <Tom_Adams@web.de>2011-03-05 11:46:24 +0100
commit50b266086bcaac99ed3cd479a09990c54e35706a (patch)
treee5854a880cec95cedd949103afa4531107bd1c8c /src/engine/shared/engine.cpp
parentfc692d85c8d960ef4754a2bbecc658975162b9e3 (diff)
downloadzcatch-50b266086bcaac99ed3cd479a09990c54e35706a.tar.gz
zcatch-50b266086bcaac99ed3cd479a09990c54e35706a.zip
made dbg_dumpmem and dbg_lognetwork work again
Diffstat (limited to 'src/engine/shared/engine.cpp')
-rw-r--r--src/engine/shared/engine.cpp55
1 files changed, 46 insertions, 9 deletions
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()