298 lines
7.7 KiB
C++
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;
|
|
}
|