Files
mir_server/server/LogicServer/Locallog/LocalSender.cpp
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

298 lines
7.7 KiB
C++

#include "StdAfx.h"
#include "LocalSender.h"
using namespace jxSrvDef;
#define LOGTIME_FLUCTUATE 60
CLocalSender::CLocalSender(jxSrvDef::SERVERTYPE ServerType,INT ServerIndex,char* ServerName)
{
this->ServerType = ServerType;
this->ServerIndex = ServerIndex;
strcpy(this->ServerName,ServerName);
this->SetClientName(_T("本地日志"));
}
CLocalSender::CLocalSender()
: ServerIndex(0)
, ServerType(InvalidServer)
{
ServerName[0] = 0;
this->SetClientName(_T("本地日志"));
}
CLocalSender::~CLocalSender(void)
{
}
VOID CLocalSender::SetServerName(LPCTSTR sServerName)
{
_tcsncpy(ServerName, sServerName, ArrayCount(ServerName) - 1);
ServerName[ArrayCount(ServerName) - 1] = 0;
}
VOID CLocalSender::SendCurrencyLog(WORD nLogId,
unsigned int nActorId,LPCTSTR sActorName,LPCTSTR sAccount,
WORD nLogType,WORD nCurrencyType,INT64 nAmount,INT64 nBalance,WORD nIsShop,int nSrvId)
{
//nAmount = (unsigned long long)nAmount;
if (nAmount == 0) return;
if (nAmount < 0) nAmount = nAmount * -1;
LOGCURRENCY data;
data.nLogId = nLogId;
data.nActorid = nActorId;
if (sActorName != NULL) {_asncpytA((data.szName),sActorName)}
else data.szName[0] = 0;
if (sAccount != NULL) {_asncpytA((data.szAccount),sAccount)}
else data.szAccount[0] = 0;
data.nLogType = nLogType;
data.nCurrencyType = nCurrencyType;
data.nAmount = nAmount;
data.nBalance = nBalance;
data.nIsShop = nIsShop;
////组装成网络包
CDataPacket &pdata = allocProtoPacket(LOG_SEND_CURRENCY_CMD); //分配一个 网络包
pdata << data;
pdata << (int)GetLogicServer()->GetSpid();
if(nSrvId > 0)
{
pdata << (int)nSrvId;
}else
{
pdata << (int)GetLogicServer()->GetServerIndex();
}
pdata << (int)GetLogicServer()->GetServerIndex();
flushProtoPacket(pdata);
}
VOID CLocalSender::SendCurrencyLog(WORD nLogId,CActor *pActor,WORD nLogType,WORD nCurrencyType,INT64 nAmount,INT64 nBalance,WORD nIsShop, int nSrvId)
{
if (pActor)
{
SendCurrencyLog(nLogId,
pActor->GetId(),(char *)(pActor->GetEntityName()),(pActor->GetAccount()),
nLogType,nCurrencyType,nAmount,nBalance,nIsShop,pActor->getOldSrvId());
}
}
VOID CLocalSender::SendShopLog(INT nItemId,
unsigned int nActorId,LPCTSTR sActorName,LPCTSTR sAccount,
WORD nShopType,WORD nItemType,WORD nItemNum,WORD nCurrencyType,INT64 nConsumeNum,int nSrvId)
{
LOGSHOP data;
data.nItemId = nItemId;
data.nActorid = nActorId;
if (sActorName != NULL) {_asncpytA((data.szName),sActorName);}
else data.szName[0] = 0;
if (sAccount != NULL) {_asncpytA((data.szAccount),sAccount);}
else data.szAccount[0] = 0;
data.nShopType = nShopType;
data.nItemType = nItemType;
data.nItemNum = nItemNum;
data.nCurrencyType = nCurrencyType;
data.nConsumeNum = nConsumeNum;
////组装成网络包
CDataPacket &pdata = allocProtoPacket(LOG_SEND_SHOP_CMD); //分配一个 网络包
pdata << data;
pdata << (int)GetLogicServer()->GetSpid();
if(nSrvId > 0)
{
pdata << (int)nSrvId;
}else
{
pdata << (int)GetLogicServer()->GetServerIndex();
}
pdata << (int)GetLogicServer()->GetServerIndex();
flushProtoPacket(pdata);
}
VOID CLocalSender::SendShopLog(INT nItemId,CActor *pActor,WORD nShopType,WORD nItemType,WORD nItemNum,WORD nCurrencyType,INT64 nConsumeNum,int nSrvId)
{
if (pActor)
{
SendShopLog(nItemId,
pActor->GetId(),(char *)(pActor->GetEntityName()),(pActor->GetAccount()),
nShopType,nItemType,nItemNum,nCurrencyType,nConsumeNum,pActor->getOldSrvId());
}
}
VOID CLocalSender::SendItemLog(INT nItemId,
unsigned int nActorId,LPCTSTR sActorName,LPCTSTR sAccount,
WORD nItemType,WORD nItemNum,WORD nOperType,LPCTSTR sReason,int nSrvId)
{
LOGITEM data;
data.nItemId = nItemId;
data.nActorid = nActorId;
if (sActorName != NULL) {_asncpytA((data.szName),sActorName);}
else data.szName[0] = 0;
if (sAccount != NULL) {_asncpytA((data.szAccount),sAccount);}
else data.szAccount[0] = 0;
data.nItemType = nItemType;
data.nItemNum = nItemNum;
data.nOperType = nOperType;
if (sReason != NULL) _asncpytA((data.sReason),sReason)
else data.sReason[0] = 0;
////组装成网络包
CDataPacket &pdata = allocProtoPacket(LOG_SEND_ITEM_CMD); //分配一个 网络包
pdata << data;
pdata << (int)GetLogicServer()->GetSpid();
if(nSrvId > 0)
{
pdata << (int)nSrvId;
}else
{
pdata << (int)GetLogicServer()->GetServerIndex();
}
pdata << (int)GetLogicServer()->GetServerIndex();
flushProtoPacket(pdata);
}
VOID CLocalSender::SendItemLog(INT nItemId,CActor *pActor,WORD nItemType,WORD nItemNum,WORD nOperType,LPCTSTR sReason,int nSrvId)
{
if (pActor)
{
SendItemLog(nItemId,
pActor->GetId(),(char *)(pActor->GetEntityName()),(pActor->GetAccount()),
nItemType,nItemNum,nOperType,sReason, pActor->getOldSrvId());
}
}
VOID CLocalSender::SendTaskLog(INT nTaskId,
unsigned int nActorId,LPCTSTR sActorName,LPCTSTR sAccount,
WORD nTaskType,WORD nStatu, int nSrvId)
{
LOGTASK data;
data.nTaskId = nTaskId;
data.nActorid = nActorId;
if (sActorName != NULL) {_asncpytA((data.szName),sActorName);}
else data.szName[0] = 0;
if (sAccount != NULL) {_asncpytA((data.szAccount),sAccount);}
else data.szAccount[0] = 0;
data.nTaskType = nTaskType;
data.nStatu = nStatu;
////组装成网络包
CDataPacket &pdata = allocProtoPacket(LOG_SEND_TASK_CMD); //分配一个 网络包
pdata << data;
pdata << (int)GetLogicServer()->GetSpid();
if(nSrvId > 0)
{
pdata << (int)nSrvId;
}else
{
pdata << (int)GetLogicServer()->GetServerIndex();
}
pdata << (int)GetLogicServer()->GetServerIndex();
flushProtoPacket(pdata);
}
VOID CLocalSender::SendTaskLog(INT nTaskId,CActor *pActor,WORD nTaskType,WORD nStatu, int nSrvId)
{
if (pActor)
{
SendTaskLog(nTaskId,
pActor->GetId(),(char *)(pActor->GetEntityName()),(pActor->GetAccount()),
nTaskType,nStatu,pActor->getOldSrvId());
}
}
VOID CLocalSender::SendActivityLog(INT nAtvId,
unsigned int nActorId,LPCTSTR sActorName,LPCTSTR sAccount,
WORD nAtvType,WORD nStatu, int nSrvId)
{
LOGACTIVITY data;
data.nAtvId = nAtvId;
data.nActorid = nActorId;
if (sActorName != NULL) {_asncpytA((data.szName),sActorName);}
else data.szName[0] = 0;
if (sAccount != NULL) {_asncpytA((data.szAccount),sAccount);}
else data.szAccount[0] = 0;
data.nAtvType = nAtvType;
data.nStatu = nStatu;
////组装成网络包
CDataPacket &pdata = allocProtoPacket(LOG_SEND_ACTIVITY_CMD); //分配一个 网络包
pdata << data;
pdata << (int)GetLogicServer()->GetSpid();
// pdata << (int)GetLogicServer()->GetServerIndex();
if(nSrvId > 0)
{
pdata << (int)nSrvId;
}else
{
pdata << (int)GetLogicServer()->GetServerIndex();
}
pdata << (int)GetLogicServer()->GetServerIndex();
flushProtoPacket(pdata);
}
VOID CLocalSender::SendActivityLog(INT nAtvId,CActor *pActor,WORD nAtvType,WORD nStatu, int nSrvId)
{
if (pActor)
{
SendActivityLog(nAtvId,
pActor->GetId(),(char *)(pActor->GetEntityName()),(pActor->GetAccount()),
nAtvType,nStatu,pActor->getOldSrvId());
}
}
VOID CLocalSender::SendCreateLocalLog(int nSpid,int Serverindex)
{
CMiniDateTime curTime;
curTime.tv = GetGlobalLogicEngine()->getMiniDateTime();
if (curTime.tv >= m_tomorrowDateTime.tv)
{
// 更新Next New Day Timepoint
//m_tomorrowDateTime.tv += 2 * TIME_FLUCTUATE;
m_tomorrowDateTime.tv = m_tomorrowDateTime.rel_tomorrow() + wrand(LOGTIME_FLUCTUATE); // 24点后TIME_FLUCTUATE秒分布
CDataPacket &pdata = allocProtoPacket(LOG_CREATETABLE_CMD); //分配一个 网络包
pdata << (int)nSpid;
pdata << (int)Serverindex;
flushProtoPacket(pdata);
}
}
VOID CLocalSender::OnDispatchRecvPacket(const jxSrvDef::INTERSRVCMD nCmd, CDataPacketReader &inPacket)
{
//空函数,本身不处理日志服务器下发的消息
}
jxSrvDef::SERVERTYPE CLocalSender::getLocalServerType()
{
return ServerType;
}
LPCSTR CLocalSender::getLocalServerName()
{
return ServerName;
}
int CLocalSender::getLocalServerIndex()
{
return ServerIndex;
}