init
This commit is contained in:
172
server/LogicServer/base/ActorDataPacketStat.cpp
Normal file
172
server/LogicServer/base/ActorDataPacketStat.cpp
Normal file
@@ -0,0 +1,172 @@
|
||||
#include "StdAfx.h"
|
||||
|
||||
|
||||
CActorDataPacketStat::~CActorDataPacketStat()
|
||||
{
|
||||
Clear();
|
||||
m_Records.empty();
|
||||
m_AllRecords.empty();
|
||||
m_AllRecords.clear();
|
||||
}
|
||||
|
||||
void CActorDataPacketStat::AddRecord(const CDataPacketRecord &record)
|
||||
{
|
||||
CDataPacketRecord *pRecord = CActorDataPacketStatAlloc::m_spADPSAllocator->AllocRecord();
|
||||
if (pRecord)
|
||||
{
|
||||
pRecord->SetData(record);
|
||||
m_Records.add(pRecord);
|
||||
}
|
||||
}
|
||||
|
||||
void CActorDataPacketStat::AddRecord(BYTE ucSysId, BYTE ucMsgId, WORD wLength, TICKCOUNT tickCount)
|
||||
{
|
||||
AddRecord(CDataPacketRecord(ucSysId, ucMsgId, wLength, tickCount));
|
||||
}
|
||||
|
||||
void CActorDataPacketStat::Clear()
|
||||
{
|
||||
for (INT_PTR i = 0; i < m_Records.count(); i++)
|
||||
{
|
||||
CActorDataPacketStatAlloc::m_spADPSAllocator->FreeRecord(m_Records[i]);
|
||||
}
|
||||
|
||||
m_Records.clear();
|
||||
}
|
||||
|
||||
void CActorDataPacketStat::WriteToFile(CActor* pActor)
|
||||
{
|
||||
static LPCTSTR szFileName = _T("ActorPacket.txt");
|
||||
using namespace wylib::stream;
|
||||
CFileStream fs(szFileName, CFileStream::faWrite, CFileStream::AlwaysOpen);
|
||||
fs.setPosition(fs.getSize());
|
||||
WriteToStream(fs, pActor);
|
||||
}
|
||||
|
||||
void CActorDataPacketStat::WriteToStream(wylib::stream::CBaseStream &stream, CActor* pActor)
|
||||
{
|
||||
const char* pActorName = NULL;
|
||||
if (pActor)
|
||||
{
|
||||
pActorName = pActor->GetEntityName();
|
||||
}
|
||||
|
||||
const TCHAR szSep[] = _T("-------------------------------------------------------------------------------------------\r\n");
|
||||
TCHAR szDateTime[256];
|
||||
CUtility::GetDateTimeDesc(szDateTime);
|
||||
stream.write(szSep, _tcslen(szSep));
|
||||
stream.write(szDateTime, _tcslen(szDateTime));
|
||||
TCHAR szDesc[256] = {0};
|
||||
_stprintf(szDesc, _T("\r\n%-20s%-25s%-25s%-25s%-25s\r\n"), _T("消息号"), _T("系统号"), _T("消息号"), _T("消息体长度"), _T("发送时间"));
|
||||
stream.write(szDesc, _tcslen(szDesc));
|
||||
|
||||
TCHAR szContent[256] = {0};
|
||||
TCHAR szContentFmt[256] = {0};
|
||||
_tcscpy(szContentFmt, _T("%-20d%-25d%-25d%-25d%-25lld\r\n"));
|
||||
for (INT_PTR i = 0; i < m_Records.count(); i++)
|
||||
{
|
||||
CDataPacketRecord* pRecord = m_Records[i];
|
||||
_stprintf(szContent, szContentFmt, (int)(i+1), (int)pRecord->m_nSystemId,
|
||||
(int)pRecord->m_nMsgId, (int)pRecord->m_nLenth, (INT64)pRecord->m_nRecordTime);
|
||||
stream.write(szContent, _tcslen(szContent));
|
||||
}
|
||||
}
|
||||
|
||||
void CActorDataPacketStat::ClearRecords()
|
||||
{
|
||||
m_AllRecords.empty();
|
||||
m_AllRecords.clear();
|
||||
}
|
||||
|
||||
void CActorDataPacketStat::AddAllRecord(BYTE ucSysId, BYTE ucMsgId, WORD wLength, TICKCOUNT tickCount,char* sMapName,int nPosX,int nPosY)
|
||||
{
|
||||
TDATAPACKETRECORD tmpRecord;
|
||||
tmpRecord.m_nSystemId = ucSysId;
|
||||
tmpRecord.m_nMsgId = ucMsgId;
|
||||
tmpRecord.m_nLenth = wLength;
|
||||
tmpRecord.m_nRecordTime = tickCount;
|
||||
tmpRecord.m_TotalSzie = wLength;
|
||||
if(sMapName)
|
||||
{
|
||||
_asncpytA(tmpRecord.m_MapName,sMapName);
|
||||
}
|
||||
else
|
||||
{
|
||||
_asncpytA(tmpRecord.m_MapName,"");
|
||||
}
|
||||
tmpRecord.m_PosX = nPosX;
|
||||
tmpRecord.m_PosY = nPosY;
|
||||
tmpRecord.m_Count = 1;
|
||||
|
||||
int nCount = (int)m_AllRecords.count();
|
||||
for(int i=0;i<nCount;i++)
|
||||
{
|
||||
TDATAPACKETRECORD& temp = m_AllRecords[i];
|
||||
if(temp.m_nSystemId == ucSysId && temp.m_nMsgId == ucMsgId)
|
||||
{
|
||||
temp.m_Count++;
|
||||
temp.m_TotalSzie += wLength;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
m_AllRecords.add(tmpRecord);
|
||||
}
|
||||
|
||||
void CActorDataPacketStat::WriteRecordToFile()
|
||||
{
|
||||
if(m_Count < 0)
|
||||
m_Count = 0;
|
||||
static LPCTSTR szFileName = _T("data/log/PacketRecord.txt");
|
||||
using namespace wylib::stream;
|
||||
CFileStream fs(szFileName, CFileStream::faWrite, CFileStream::AlwaysOpen);
|
||||
fs.setPosition(fs.getSize());
|
||||
|
||||
m_Count++;
|
||||
WriteRecordToStream(fs);
|
||||
}
|
||||
|
||||
void CActorDataPacketStat::WriteRecordToStream(wylib::stream::CBaseStream &stream)
|
||||
{
|
||||
const TCHAR szSep[] = _T("服务器下发的数据包-------------------------------------------------------------------------------------------\r\n");
|
||||
TCHAR szDateTime[256];
|
||||
CUtility::GetDateTimeDesc(szDateTime);
|
||||
stream.write(szSep, _tcslen(szSep));
|
||||
stream.write(szDateTime, _tcslen(szDateTime));
|
||||
TCHAR szCount[256] = {0};
|
||||
CVector<void *> actorList;
|
||||
GetGlobalLogicEngine()->GetEntityMgr()->GetOnlineAcotrPtrList(actorList);
|
||||
int nCount = (int)actorList.count();
|
||||
|
||||
_stprintf(szCount,_T("%-20s%-2d%"),_T("玩家人数:"),nCount);
|
||||
stream.write(szCount, _tcslen(szCount));
|
||||
|
||||
TCHAR szDesc[256] = {0};
|
||||
_stprintf(szDesc, _T("\r\n%-20s%-25s%-25s%-25s%-25s%-25s\r\n"), _T("系统号"), _T("消息号"), _T("消息数量"), _T("单个消息体长度"),_T("总消息体长度"), _T("发送时间"));
|
||||
stream.write(szDesc, _tcslen(szDesc));
|
||||
|
||||
TCHAR szContent[256] = {0};
|
||||
TCHAR szContentFmt[256] = {0};
|
||||
_tcscpy(szContentFmt, _T("%-20d%-25d%-25d%-25d%-25lld%-25lld\r\n"));
|
||||
INT64 nTotalSize = 0;
|
||||
for (INT_PTR i = 0; i < m_AllRecords.count(); i++)
|
||||
{
|
||||
TDATAPACKETRECORD& tempRecord = m_AllRecords[i];
|
||||
if(tempRecord.m_Count == 0)
|
||||
tempRecord.m_Count = 1;
|
||||
int tmpSize = (int)(tempRecord.m_TotalSzie/tempRecord.m_Count);
|
||||
_stprintf(szContent, szContentFmt, (int)tempRecord.m_nSystemId,
|
||||
(int)tempRecord.m_nMsgId, (int)tempRecord.m_Count,(int)tmpSize,(INT64)(tempRecord.m_TotalSzie), (INT64)tempRecord.m_nRecordTime);
|
||||
stream.write(szContent, _tcslen(szContent));
|
||||
nTotalSize += tempRecord.m_TotalSzie;
|
||||
}
|
||||
|
||||
TCHAR szTotal[256] = {0};
|
||||
if(m_Count <= 0)
|
||||
m_Count = 1;
|
||||
|
||||
_stprintf(szTotal,_T("%-2s%-20lld%-2s%-0.2f%mbps\r\n"),_T("数据总大小:"),nTotalSize,_T("平均带宽:"),nTotalSize * 8/(60*m_Count*1024*1024));
|
||||
stream.write(szTotal, _tcslen(szTotal));
|
||||
|
||||
//ClearRecords();
|
||||
}
|
||||
Reference in New Issue
Block a user