📄 trafficlog.cpp
字号:
// TrafficLog.cpp: implementation of the CTrafficLog class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "TrafficLog.h"
#include "UserTable.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
GLOBALTON(CTrafficLog);
CTrafficLog::CTrafficLog()
{
m_CPLogBuffer = 0;
}
CTrafficLog::~CTrafficLog()
{
// BatchWriteLog();
}
void CTrafficLog::BatchWriteLog()
{
FILE* fp = fopen("trafficLog.txt","a+");
if(fp)
{
fprintf(fp,m_LogBuffer);
m_CPLogBuffer = 0;
fclose(fp);
}
}
void CTrafficLog::LogBuffer(char * buffer,...)
{
char msg2[256];
va_list argList;
va_start(argList, buffer);
vsprintf(msg2,buffer,argList);
va_end(argList);
int strsize = strlen(msg2);
if(m_CPLogBuffer + strsize >= MAX_LOG_BUFFER_SIZE)
{
BatchWriteLog();
}
strncpy(&m_LogBuffer[m_CPLogBuffer], msg2, strsize);
m_LogBuffer[m_CPLogBuffer+strsize]=0;
m_CPLogBuffer += strsize;
}
void CTrafficLog::LogToFileAll()
{
#ifdef _NETWORKTEST
DWORD packetSum = 0;
DWORD sizeSum = 0;
LogBuffer("TotalCount:%8u==========================================================================================", g_pUserTable->GetUserCount());
USERINFO * pInfo = NULL;
g_pUserTable->SetPositionUserHead();
while(pInfo = g_pUserTableForUserID->GetUserData())
{
LogUser(pInfo);
}
LogBuffer("========================================================================================================");
#endif
}
void CTrafficLog::LogUser(USERINFO * pUserInfo)
{
#ifdef _NETWORKTEST
DWORD packetUserSum = 0;
DWORD sizeUserSum = 0;
DWORD packetServerSum = 0;
DWORD sizeServerSum = 0;
LogBuffer("UserID:%8u | CharID:%8u | \n", pUserInfo->dwUserID, pUserInfo->dwCharacterID);
LogBuffer("LogInTime(tick):%8u | LogInRemainTime(tick):%8u | \n", pUserInfo->dwStartTrafficTime, gCurTime - pUserInfo->dwStartTrafficTime);
for(int i = 0 ; i < MP_MAX ; ++i)
{
if(pUserInfo->dwPacketForUserSend[i] && pUserInfo->dwPacketForServerSend[i])
{
LogBuffer("%3d Protocol | Userpacket(Num):%8u | Serverpacket(Num):%8u | UserPacketSize:%8u | ServerPacketSize:%8u |\n", i, pUserInfo->dwPacketForUserSend[i], pUserInfo->dwPacketForServerSend[i], pUserInfo->dwTrafficForUserSend[i], pUserInfo->dwTrafficForServerSend[i]);
packetUserSum += pUserInfo->dwPacketForUserSend[i];
sizeUserSum += pUserInfo->dwTrafficForUserSend[i];
packetServerSum += pUserInfo->dwPacketForServerSend[i];
sizeServerSum += pUserInfo->dwTrafficForServerSend[i];
}
}
LogBuffer("UserTotalNumber(num):%8u | ServerTotalNumber(num):%8u | UserTotalSize(byte):%8u | ServerTotalSize(byte):%8u |\n\n", packetUserSum, packetServerSum, sizeUserSum, sizeServerSum);
#endif
}
////KES
void CTrafficLog::StartRecord()
{
m_dwStartTime = gCurTime;
SYSTEMTIME ti;
GetLocalTime( &ti );
char fname[256];
sprintf(fname,"RTrafficLog_Agent%d_%02d%02d%02d.txt", g_pServerSystem->GetServerNum(),
ti.wYear, ti.wMonth, ti.wDay );
FILE* fp = NULL;
fp = fopen( fname, "a+" );
if(fp)
{
fprintf( fp, "扁废矫埃\t醚罐篮农扁\t醚罐篮荐\t版苞矫埃\t泅犁悼立\n" );
fclose( fp );
}
sprintf(fname,"STrafficLog_Agent%d_%02d%02d%02d.txt", g_pServerSystem->GetServerNum(),
ti.wYear, ti.wMonth, ti.wDay );
fp = fopen( fname, "a+" );
if(fp)
{
fprintf( fp, "扁废矫埃\t醚焊辰农扁\t醚焊辰荐\t版苞矫埃\t泅犁悼立\n" );
fclose( fp );
}
sprintf(fname,"RMove_Agent%d_%02d%02d%02d.txt", g_pServerSystem->GetServerNum(),
ti.wYear, ti.wMonth, ti.wDay );
fp = fopen( fname, "a+" );
if(fp)
{
fprintf( fp, "0: player, 1:monster ; 0: MP_TARGET, 1:MP_ONETARGET, 2:MP_COLLECTION\n" );
fclose( fp );
}
sprintf(fname,"SRMove_Agent%d_%02d%02d%02d.txt", g_pServerSystem->GetServerNum(),
ti.wYear, ti.wMonth, ti.wDay );
fp = fopen( fname, "a+" );
if(fp)
{
fprintf( fp, "0: player, 1:monster ; 0: MP_TARGET, 1:MP_ONETARGET, 2:MP_COLLECTION\n" );
fclose( fp );
}
Clear();
}
void CTrafficLog::EndRecord()
{
WriteTrafficLogFile();
Clear();
}
void CTrafficLog::AddReceivePacket( DWORD dwCategory, DWORD dwLength )
{
m_dwTotalReceiveSize[dwCategory] += (dwLength + 40);
++m_dwTotalReceiveNum[dwCategory];
}
void CTrafficLog::AddSendPacket( DWORD dwCategory, DWORD dwLength )
{
m_dwTotalSendSize[dwCategory] += (dwLength + 40); // TCP/IP Header bytes
++m_dwTotalSendNum[dwCategory];
}
//0: player, 1:monster ; 0: MP_TARGET, 1:MP_ONETARGET, 2:MP_COLLECTION
void CTrafficLog::AddReceiveMovePacket( DWORD dwObjectID, WORD Protocol, DWORD dwLength )
{
int nMP = 3;
if( Protocol == MP_MOVE_TARGET )
nMP = 0;
else if( Protocol == MP_MOVE_ONETARGET )
nMP = 1;
else if( Protocol == MP_MOVE_CORRECTION )
nMP = 2;
if( dwObjectID < 2000000 ) //player
{
m_dwMoveSizeReceive[0][nMP] += dwLength;
++m_dwMoveNumReceive[0][nMP];
}
else //monster
{
m_dwMoveSizeReceive[1][nMP] += dwLength;
++m_dwMoveNumReceive[1][nMP];
}
}
void CTrafficLog::AddSendMovePacket( DWORD dwObjectID, WORD Protocol, DWORD dwLength )
{
int nMP = 3;
if( Protocol == MP_MOVE_TARGET )
nMP = 0;
else if( Protocol == MP_MOVE_ONETARGET )
nMP = 1;
else if( Protocol == MP_MOVE_CORRECTION )
nMP = 2;
if( dwObjectID < 2000000 ) //player
{
m_dwMoveSizeSend[0][nMP] += dwLength;
++m_dwMoveNumSend[0][nMP];
}
else //monster
{
m_dwMoveSizeSend[1][nMP] += dwLength;
++m_dwMoveNumSend[1][nMP];
}
}
#define TRAFFIC_LOG_WRITE_TIME 600000
void CTrafficLog::Process()
{
if( gCurTime - m_dwStartTime >= TRAFFIC_LOG_WRITE_TIME )
{
WriteTrafficLogFile();
Clear();
m_dwStartTime = gCurTime;
}
}
void CTrafficLog::Clear()
{
ZeroMemory( m_dwTotalReceiveSize, sizeof(m_dwTotalReceiveSize) );
ZeroMemory( m_dwTotalReceiveNum, sizeof(m_dwTotalReceiveNum) );
ZeroMemory( m_dwTotalSendSize, sizeof(m_dwTotalSendSize) );
ZeroMemory( m_dwTotalSendNum, sizeof(m_dwTotalSendNum) );
ZeroMemory( m_dwMoveSizeReceive, sizeof(m_dwMoveSizeReceive) );
ZeroMemory( m_dwMoveNumReceive, sizeof(m_dwMoveNumReceive) );
ZeroMemory( m_dwMoveSizeSend, sizeof(m_dwMoveSizeSend) );
ZeroMemory( m_dwMoveNumSend, sizeof(m_dwMoveNumSend) );
}
void CTrafficLog::WriteTrafficLogFile()
{
//
DWORD dwReceiveTotalSize = 0;
DWORD dwSendTotalSize = 0;
DWORD dwReceiveTotalNum = 0;
DWORD dwSendTotalNum = 0;
for( int i = 0 ; i < MP_MAX ; ++i )
{
dwReceiveTotalSize += m_dwTotalReceiveSize[i];
dwReceiveTotalNum += m_dwTotalReceiveNum[i];
dwSendTotalSize += m_dwTotalSendSize[i];
dwSendTotalNum += m_dwTotalSendNum[i];
}
SYSTEMTIME ti;
GetLocalTime( &ti );
char fname[256];
sprintf(fname,"RTrafficLog_Agent%d_%02d%02d%02d.txt", g_pServerSystem->GetServerNum(),
ti.wYear, ti.wMonth, ti.wDay );
FILE* fp;
fp = fopen( fname, "a+" );
if(fp)
{
fprintf( fp, "%02d:%02d:%02d\t", ti.wHour, ti.wMinute, ti.wSecond );
fprintf( fp, "%u\t%u", dwReceiveTotalSize, dwReceiveTotalNum );
fprintf( fp, "\t%u", g_pUserTable->GetDataNum() );
fprintf( fp, "\t%u", gCurTime - m_dwStartTime );
for( int i = 0 ; i < MP_MAX ; ++i )
{
fprintf( fp, "\t%u\t%u", m_dwTotalReceiveSize[i], m_dwTotalReceiveNum[i] );
}
fprintf( fp, "\n");
fclose(fp);
}
sprintf(fname,"STrafficLog_Agent%d_%02d%02d%02d.txt", g_pServerSystem->GetServerNum(),
ti.wYear, ti.wMonth, ti.wDay );
fp = fopen( fname, "a+" );
if(fp)
{
fprintf( fp, "%02d:%02d:%02d\t", ti.wHour, ti.wMinute, ti.wSecond );
fprintf( fp, "%u\t%u", dwSendTotalSize, dwSendTotalNum );
fprintf( fp, "\t%u", g_pUserTable->GetDataNum() );
fprintf( fp, "\t%u", gCurTime - m_dwStartTime );
for( int i = 0 ; i < MP_MAX ; ++i )
{
fprintf( fp, "\t%u\t%u", m_dwTotalSendSize[i], m_dwTotalSendNum[i] );
}
fprintf( fp, "\n");
fclose(fp);
}
sprintf(fname,"RMove_Agent%d_%02d%02d%02d.txt", g_pServerSystem->GetServerNum(),
ti.wYear, ti.wMonth, ti.wDay );
fp = fopen( fname, "a+" );
if(fp)
{
fprintf( fp, "%02d:%02d:%02d\t", ti.wHour, ti.wMinute, ti.wSecond );
fprintf( fp, "\t%u", g_pUserTable->GetDataNum() );
fprintf( fp, "\t%u", gCurTime - m_dwStartTime );
int i, j;
for( i = 0 ; i < 2 ; ++i )
{
for( j = 0 ; j < 4 ; ++j )
{
fprintf( fp, "\t%u", m_dwMoveSizeReceive[i][j] );
}
for( j = 0 ; j < 4 ; ++j )
{
fprintf( fp, "\t%u", m_dwMoveNumReceive[i][j] );
}
fprintf( fp, "\n" );
}
fclose( fp );
}
sprintf(fname,"SRMove_Agent%d_%02d%02d%02d.txt", g_pServerSystem->GetServerNum(),
ti.wYear, ti.wMonth, ti.wDay );
fp = fopen( fname, "a+" );
if(fp)
{
fprintf( fp, "%02d:%02d:%02d\t", ti.wHour, ti.wMinute, ti.wSecond );
fprintf( fp, "\t%u", g_pUserTable->GetDataNum() );
fprintf( fp, "\t%u", gCurTime - m_dwStartTime );
int i, j;
for( i = 0 ; i < 2 ; ++i )
{
for( j = 0 ; j < 4 ; ++j )
{
fprintf( fp, "\t%u", m_dwMoveSizeSend[i][j] );
}
for( j = 0 ; j < 4 ; ++j )
{
fprintf( fp, "\t%u", m_dwMoveNumSend[i][j] );
}
}
fclose( fp );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -