⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trafficlog.cpp

📁 墨香最新私服
💻 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 + -