mirror of
https://github.com/alliedmodders/amxmodx.git
synced 2024-12-25 14:25:38 +03:00
binlog reader no longer logs plugin database in a separate file
This commit is contained in:
parent
dc9350fcc5
commit
f55a8c54cc
@ -45,8 +45,27 @@ bool BinLog::Open()
|
|||||||
}
|
}
|
||||||
build_pathname_r(file, sizeof(file)-1, "%s/binlogs/binlog%04d.blg", data, lastcntr);
|
build_pathname_r(file, sizeof(file)-1, "%s/binlogs/binlog%04d.blg", data, lastcntr);
|
||||||
m_logfile.assign(file);
|
m_logfile.assign(file);
|
||||||
build_pathname_r(file, sizeof(file)-1, "%s/binlogs/bindb%04d.bdb", data, lastcntr);
|
|
||||||
m_dbfile.assign(file);
|
/**
|
||||||
|
* it's now safe to create the binary log
|
||||||
|
*/
|
||||||
|
FILE *fp = fopen(m_logfile.c_str(), "wb");
|
||||||
|
if (!fp)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
int magic = BINLOG_MAGIC;
|
||||||
|
short vers = BINLOG_VERSION;
|
||||||
|
char c = sizeof(time_t);
|
||||||
|
fwrite(&magic, sizeof(int), 1, fp);
|
||||||
|
fwrite(&vers, sizeof(short), 1, fp);
|
||||||
|
fwrite(&c, sizeof(char), 1, fp);
|
||||||
|
|
||||||
|
WritePluginDB(fp);
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
m_state = true;
|
||||||
|
|
||||||
|
WriteOp(BinLog_Start, -1);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -54,10 +73,14 @@ bool BinLog::Open()
|
|||||||
void BinLog::Close()
|
void BinLog::Close()
|
||||||
{
|
{
|
||||||
WriteOp(BinLog_End, -1);
|
WriteOp(BinLog_End, -1);
|
||||||
|
m_state = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinLog::WriteOp(BinLogOp op, int plug, ...)
|
void BinLog::WriteOp(BinLogOp op, int plug, ...)
|
||||||
{
|
{
|
||||||
|
if (!m_state)
|
||||||
|
return;
|
||||||
|
|
||||||
FILE *fp = fopen(m_logfile.c_str(), "ab");
|
FILE *fp = fopen(m_logfile.c_str(), "ab");
|
||||||
if (!fp)
|
if (!fp)
|
||||||
return;
|
return;
|
||||||
@ -70,7 +93,6 @@ void BinLog::WriteOp(BinLogOp op, int plug, ...)
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
Close();
|
Close();
|
||||||
Open();
|
Open();
|
||||||
CacheAllPlugins();
|
|
||||||
fp = fopen(m_logfile.c_str(), "ab");
|
fp = fopen(m_logfile.c_str(), "ab");
|
||||||
if (!fp)
|
if (!fp)
|
||||||
return;
|
return;
|
||||||
@ -187,18 +209,8 @@ void BinLog::WriteOp(BinLogOp op, int plug, ...)
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinLog::CacheAllPlugins()
|
void BinLog::WritePluginDB(FILE *fp)
|
||||||
{
|
{
|
||||||
FILE *fp = fopen(m_dbfile.c_str(), "wb");
|
|
||||||
if (!fp)
|
|
||||||
return;
|
|
||||||
|
|
||||||
unsigned int magic = BINDB_MAGIC;
|
|
||||||
unsigned short vers = BINDB_VERSION;
|
|
||||||
|
|
||||||
fwrite(&magic, sizeof(unsigned int), 1, fp);
|
|
||||||
fwrite(&vers, sizeof(unsigned short), 1, fp);
|
|
||||||
|
|
||||||
int num = g_plugins.getPluginsNum();
|
int num = g_plugins.getPluginsNum();
|
||||||
fwrite(&num, sizeof(int), 1, fp);
|
fwrite(&num, sizeof(int), 1, fp);
|
||||||
|
|
||||||
@ -243,24 +255,6 @@ void BinLog::CacheAllPlugins()
|
|||||||
fwrite(name, sizeof(char), len, fp);
|
fwrite(name, sizeof(char), len, fp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fclose(fp);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* it's now safe to create the binary log
|
|
||||||
*/
|
|
||||||
fp = fopen(m_logfile.c_str(), "wb");
|
|
||||||
if (!fp)
|
|
||||||
return;
|
|
||||||
|
|
||||||
magic = BINLOG_MAGIC;
|
|
||||||
vers = BINLOG_VERSION;
|
|
||||||
c = sizeof(time_t);
|
|
||||||
fwrite(&magic, sizeof(int), 1, fp);
|
|
||||||
fwrite(&vers, sizeof(short), 1, fp);
|
|
||||||
fwrite(&c, sizeof(char), 1, fp);
|
|
||||||
fclose(fp);
|
|
||||||
|
|
||||||
WriteOp(BinLog_Start, -1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //BINLOG_ENABLED
|
#endif //BINLOG_ENABLED
|
||||||
|
@ -6,25 +6,13 @@
|
|||||||
#include "CString.h"
|
#include "CString.h"
|
||||||
|
|
||||||
#define BINLOG_MAGIC 0x414D424C
|
#define BINLOG_MAGIC 0x414D424C
|
||||||
#define BINLOG_VERSION 0x0100
|
#define BINLOG_VERSION 0x0200
|
||||||
#define BINDB_MAGIC 0x414D4244
|
|
||||||
#define BINDB_VERSION 0x0100
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format of binlog:
|
* Format of binlog:
|
||||||
* uint32 magic
|
* uint32 magic
|
||||||
* uint16 version
|
* uint16 version
|
||||||
* uint8 sizeof(time_t)
|
* uint8 sizeof(time_t)
|
||||||
* [
|
|
||||||
* uint8 operation code
|
|
||||||
* time_t realtime
|
|
||||||
* float gametime
|
|
||||||
* int32 plugin id
|
|
||||||
* <extra info>
|
|
||||||
* ]
|
|
||||||
* Format of bindb:
|
|
||||||
* uint32 magic
|
|
||||||
* uint16 version
|
|
||||||
* uint32 num plugins
|
* uint32 num plugins
|
||||||
* [
|
* [
|
||||||
* uint8 status codes
|
* uint8 status codes
|
||||||
@ -37,6 +25,14 @@
|
|||||||
* [
|
* [
|
||||||
* str[uint8] public name
|
* str[uint8] public name
|
||||||
* ]
|
* ]
|
||||||
|
* ]
|
||||||
|
* [
|
||||||
|
* uint8 operation code
|
||||||
|
* time_t realtime
|
||||||
|
* float gametime
|
||||||
|
* int32 plugin id
|
||||||
|
* <extra info>
|
||||||
|
* ]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
enum BinLogOp
|
enum BinLogOp
|
||||||
@ -57,14 +53,19 @@ enum BinLogOp
|
|||||||
|
|
||||||
class BinLog
|
class BinLog
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
BinLog() : m_state(false)
|
||||||
|
{
|
||||||
|
};
|
||||||
public:
|
public:
|
||||||
bool Open();
|
bool Open();
|
||||||
void Close();
|
void Close();
|
||||||
void CacheAllPlugins();
|
|
||||||
void WriteOp(BinLogOp op, int plug, ...);
|
void WriteOp(BinLogOp op, int plug, ...);
|
||||||
private:
|
private:
|
||||||
String m_dbfile;
|
void WritePluginDB(FILE *fp);
|
||||||
|
private:
|
||||||
String m_logfile;
|
String m_logfile;
|
||||||
|
bool m_state;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern BinLog g_BinLog;
|
extern BinLog g_BinLog;
|
||||||
|
@ -292,15 +292,6 @@ int C_Spawn(edict_t *pent)
|
|||||||
// Set server flags
|
// Set server flags
|
||||||
memset(g_players[0].flags, -1, sizeof(g_players[0].flags));
|
memset(g_players[0].flags, -1, sizeof(g_players[0].flags));
|
||||||
|
|
||||||
#if defined BINLOG_ENABLED
|
|
||||||
if (!g_BinLog.Open())
|
|
||||||
{
|
|
||||||
LOG_ERROR(PLID, "Binary log failed to open.");
|
|
||||||
}
|
|
||||||
g_binlog_level = atoi(get_localinfo("bin_logging", "17"));
|
|
||||||
g_binlog_maxsize = atoi(get_localinfo("g_binlog_maxsize", "20"));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
g_opt_level = atoi(get_localinfo("optimizer", "7"));
|
g_opt_level = atoi(get_localinfo("optimizer", "7"));
|
||||||
if (!g_opt_level)
|
if (!g_opt_level)
|
||||||
g_opt_level = 7;
|
g_opt_level = 7;
|
||||||
@ -325,7 +316,12 @@ int C_Spawn(edict_t *pent)
|
|||||||
FF_ChangeLevel = registerForward("server_changelevel", ET_STOP, FP_STRING, FP_DONE);
|
FF_ChangeLevel = registerForward("server_changelevel", ET_STOP, FP_STRING, FP_DONE);
|
||||||
|
|
||||||
#if defined BINLOG_ENABLED
|
#if defined BINLOG_ENABLED
|
||||||
g_BinLog.CacheAllPlugins();
|
if (!g_BinLog.Open())
|
||||||
|
{
|
||||||
|
LOG_ERROR(PLID, "Binary log failed to open.");
|
||||||
|
}
|
||||||
|
g_binlog_level = atoi(get_localinfo("bin_logging", "17"));
|
||||||
|
g_binlog_maxsize = atoi(get_localinfo("binlog_maxsize", "20"));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
modules_callPluginsLoaded();
|
modules_callPluginsLoaded();
|
||||||
|
@ -614,7 +614,7 @@
|
|||||||
AdditionalDependencies="..\zlib\zlib.lib ..\JIT\amxjitsn.obj ..\JIT\amxexecn.obj ..\JIT\natives-x86.obj"
|
AdditionalDependencies="..\zlib\zlib.lib ..\JIT\amxjitsn.obj ..\JIT\amxexecn.obj ..\JIT\natives-x86.obj"
|
||||||
OutputFile="jitdebugbinlog/amxmodx_mm.dll"
|
OutputFile="jitdebugbinlog/amxmodx_mm.dll"
|
||||||
Version="0.1"
|
Version="0.1"
|
||||||
LinkIncremental="1"
|
LinkIncremental="2"
|
||||||
SuppressStartupBanner="TRUE"
|
SuppressStartupBanner="TRUE"
|
||||||
AdditionalLibraryDirectories="..\extra\lib_win32"
|
AdditionalLibraryDirectories="..\extra\lib_win32"
|
||||||
IgnoreDefaultLibraryNames="MSVCRT"
|
IgnoreDefaultLibraryNames="MSVCRT"
|
||||||
|
Loading…
Reference in New Issue
Block a user