Files
mir_server/Gateway/common/log/log_sender.cc
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

642 lines
12 KiB
C++

#include <stdlib.h>
#include <stdio.h>
#include "os_def.h"
#include "_ast.h"
#include "x_tick.h"
#include "x_lock.h"
#include "container/queue_list.h"
#include "net/base_socket.h"
#include "share_util.h"
#include "memory/buffer_allocator.h"
#include "appitnmsg.h"
#include "data_packet.hpp"
#include "net/send_packet_pool.h"
#include "net/work_socket.h"
#include "net/net_client.h"
#include "server_def.h"
#include "log_def.h"
#include "encrypt/CRC.h"
#include "encrypt/Encrypt.h"
#include "log_sender.h"
using namespace SrvDef;
LogSender::LogSender(int ServerType, int ServerIndex, char* ServerName) : NetClient("LogSender")
{
this->ServerType = ServerType;
this->ServerIndex = ServerIndex;
_STRNCPY_A(this->ServerName, ServerName);
this->SetClientName(("logger server"));
stop_log_ = false;
stop_counter_log_ = false;
stop_economy_log_ = false;
}
LogSender::LogSender() : NetClient("LogSender")
{
this->SetClientName(("logger server"));
stop_log_ = false;
stop_counter_log_ = false;
stop_economy_log_ = false;
}
LogSender::~LogSender(void)
{
}
void LogSender::SetServerName(const char* sServerName)
{
_STRNCPY_S(ServerName, sServerName, ArrayCount(ServerName) - 1);
ServerName[ArrayCount(ServerName) - 1] = 0;
}
int LogSender::GetLocalServerType()
{
return ServerType;
}
const char* LogSender::GetLocalServerName()
{
return ServerName;
}
int LogSender::GetLocalServerIndex()
{
return ServerIndex;
}
void LogSender::OnConnected()
{
setRecvBufSize(1024 * 1024);
setSendBufSize(1024 * 1024);
}
void LogSender::LogCounter(ActorId actorId, const char* aid, const char* user_level /*= ""*/,
const char* counter /*= ""*/, const char* value /*= ""*/, const char* extra /*= ""*/,
const char* kingdom /*= ""*/, const char* phylum /*= ""*/, const char* classfield /*= ""*/,
const char* family /*= ""*/, const char* genus /*= ""*/, int flag)
{
if (stop_log_ || stop_counter_log_) return;
LCounter data;
memset(&data, 0, sizeof(data));
data.actorid_ = actorId;
data.flag_ = flag;
if (aid)
{
_STRNCPY_A(data.aid_, aid);
}
if (user_level)
{
_STRNCPY_A(data.user_level_, user_level);
}
if (counter)
{
_STRNCPY_A(data.counter_, counter);
}
if (value)
{
_STRNCPY_A(data.value_, value);
}
if (extra)
{
_STRNCPY_A(data.extra_, extra);
}
if (kingdom)
{
_STRNCPY_A(data.kingdom_, kingdom);
}
if (phylum)
{
_STRNCPY_A(data.phylum_, phylum);
}
if (classfield)
{
_STRNCPY_A(data.classfield_, classfield);
}
if (family)
{
_STRNCPY_A(data.family_, family);
}
if (genus)
{
_STRNCPY_A(data.genus_, genus);
}
DataPacket& pdata = allocProtoPacket(lmCounter);
pdata << data;
flushProtoPacket(pdata);
}
void LogSender::LogDcApiLogByStr(const char* logName, const char* logContent)
{
if (stop_log_) return;
if(!logName || !logContent) return;
LDcApiData data;
memset(&data, 0, sizeof(data));
data.log_type_ = 4;
_STRNCPY_A(data.log_name_, logName);
_STRNCPY_A(data.content_ ,logContent);
DataPacket& pdata = allocProtoPacket(lmDcApiData);
pdata << data;
flushProtoPacket(pdata);
}
void LogSender::LogDcApiProto(const char* openId, int pfId, int serverId, int roleId, int systemId, int protoId, int protoType, int protoResult, const char* svrip, const char* userip)
{
//if (!et || ((Entity*)et)->GetType() != enActor)
// return;
//Actor* pActor =(Entity*)et;
if (stop_log_) return;
if(!openId) return;
LDcApiProtoLog logData;
memset(&logData, 0, sizeof(logData));
//_STRNCPY_A(logData.openId, pActor->GetAccount());
_STRNCPY_A(logData.openId, openId);
logData.domain = pfId;
//logData.serverId = ServerInstance()->GetServerIndex();
logData.serverId = serverId;
_STRNCPY_A(logData.svrip, svrip);
_STRNCPY_A(logData.userip, userip);
//logData.roleId = pActor->GetActorId();
logData.roleId = roleId;
logData.protoId = MAKEINT16(protoId, systemId);
logData.gameFeatrueId = systemId;
logData.protoType = protoType;
logData.protoResult = protoResult;
DataPacket& pdata = allocProtoPacket(lmDcApiProto);
pdata << logData;
flushProtoPacket(pdata);
}
void LogSender::LogInstall(const char* aid, const char* source /*= ""*/,
const char* affiliate /*= ""*/, const char* creative /*= ""*/,
const char* family /*= ""*/, const char* genus /*= ""*/,
const char* from_uid /*= ""*/ , const char* extra, int flag/* = 3*/)
{
if (stop_log_) return;
LInstall data;
memset(&data, 0, sizeof(data));
data.flag_ = flag;
if (aid)
{
_STRNCPY_A(data.aid_, aid);
}
if (source)
{
_STRNCPY_A(data.source_, source);
}
if (affiliate)
{
_STRNCPY_A(data.affiliate_, affiliate);
}
if (creative)
{
_STRNCPY_A(data.creative_, creative);
}
if (family)
{
_STRNCPY_A(data.family_, family);
}
if (genus)
{
_STRNCPY_A(data.genus_, genus);
}
if (from_uid)
{
_STRNCPY_A(data.from_uid_, from_uid);
}
if (extra)
{
_STRNCPY_A(data.extra_, extra);
}
DataPacket& pdata = allocProtoPacket(lmInstall);
pdata << data;
flushProtoPacket(pdata);
}
void LogSender::LogDau(const char* aid, const char* source /*= ""*/,
const char* affiliate /*= ""*/, const char* creative /*= ""*/,
const char* family /*= ""*/, const char* genus /*= ""*/,
const char* ip /*= ""*/, const char* from_uid /*= ""*/, const char* extra, int flag/* = 3*/)
{
if (stop_log_) return;
LDau data;
memset(&data, 0, sizeof(data));
data.flag_ = flag;
if (aid)
{
_STRNCPY_A(data.aid_, aid);
}
if (source)
{
_STRNCPY_A(data.source_, source);
}
if (affiliate)
{
_STRNCPY_A(data.affiliate_, affiliate);
}
if (creative)
{
_STRNCPY_A(data.creative_, creative);
}
if (family)
{
_STRNCPY_A(data.family_, family);
}
if (genus)
{
_STRNCPY_A(data.genus_, genus);
}
if (ip)
{
_STRNCPY_A(data.ip_, ip);
}
if (from_uid)
{
_STRNCPY_A(data.from_uid_, from_uid);
}
if (extra)
{
_STRNCPY_A(data.extra_, extra);
}
DataPacket& pdata = allocProtoPacket(lmDau);
pdata << data;
flushProtoPacket(pdata);
}
void LogSender::LogEnconomy(ActorId actorid, const char* aid, const char* currency /*= ""*/,
const char* amount /*= ""*/, const char* value /*= ""*/,
const char* kingdom /*= ""*/, const char* phylum /*= ""*/,
const char* classfield /*= ""*/, const char* family /*= ""*/,
const char* genus /*= ""*/ , const char* extra, const char* extra2, const char* pf, int flag/* = 3*/,
bool isPay, const char* openkey, const char* pfkey, const char* pfid)
{
if (stop_log_ || stop_economy_log_) return;
LEconomy data;
memset(&data, 0, sizeof(data));
data.flag_ = flag;
data.flag_ |= (isPay ? lfiIsPay : 0);
data.actorid_ = actorid;
if (aid)
{
_STRNCPY_A(data.aid_, aid);
}
if (currency)
{
_STRNCPY_A(data.currency_, currency);
}
if (amount)
{
_STRNCPY_A(data.amount_, amount);
}
if (value)
{
_STRNCPY_A(data.value_, value);
}
if (kingdom)
{
_STRNCPY_A(data.kingdom_, kingdom);
}
if (phylum)
{
_STRNCPY_A(data.phylum_, phylum);
}
if (classfield)
{
_STRNCPY_A(data.classfield_, classfield);
}
if (family)
{
_STRNCPY_A(data.family_, family);
}
if (genus)
{
_STRNCPY_A(data.genus_, genus);
}
if (extra)
{
_STRNCPY_A(data.extra_, extra);
}
if (extra2)
{
_STRNCPY_A(data.extra2_, extra2);
}
if (pf)
{
_STRNCPY_A(data.pf_, pf);
}
if (openkey)
{
_STRNCPY_A(data.openkey_, openkey);
}
if (pfkey)
{
_STRNCPY_A(data.pfkey_, pfkey);
}
if (pfid) {
_STRNCPY_A(data.pfid_, pfid);
}
DataPacket& pdata = allocProtoPacket(lmEconomy);
pdata << data;
flushProtoPacket(pdata);
}
void LogSender::LogMilestone(ActorId actorid, const char* aid, const char* milestone /*= ""*/, const char* value /*= ""*/, const char* extra, int flag/* = 3*/)
{
if (stop_log_) return;
LMilestone data;
memset(&data, 0, sizeof(data));
data.flag_ = flag;
data.actorid_ = actorid;
if (aid)
{
_STRNCPY_A(data.aid_, aid);
}
if (milestone)
{
_STRNCPY_A(data.milestone_, milestone);
}
if (value)
{
_STRNCPY_A(data.value_, value);
}
if (extra)
{
_STRNCPY_A(data.extra_, extra);
}
DataPacket& pdata = allocProtoPacket(lmMilestone);
pdata << data;
flushProtoPacket(pdata);
}
void LogSender::LogPayment(int ret, ActorId actorId, const char* aid, int amount,
int mstType, int p1, int p2, int p3,
int value /*= 1*/, const char* kingdom /*= ""*/, const char* phylum /*= ""*/, const char* transactionid /*= ""*/,
const char* extra /*= ""*/, int p4 /*= 0*/, int p5 /*= 0*/, int flag/* = 3*/)
{
if (stop_log_) return;
LPayment data;
memset(&data, 0, sizeof(data));
data.ret_ = ret;
data.actorId_ = actorId;
data.amount_ = amount;
data.value_ = value;
data.mstType_ = mstType;
data.p1_ = p1;
data.p2_ = p2;
data.p3_ = p3;
data.p4_ = p4;
data.p5_ = p5;
data.flag_ = flag;
if (aid)
{
_STRNCPY_A(data.aid_, aid);
}
if (kingdom)
{
_STRNCPY_A(data.kingdom_, kingdom);
}
if (phylum)
{
_STRNCPY_A(data.phylum_, phylum);
}
if (transactionid)
{
_STRNCPY_A(data.transactionid_, transactionid);
}
if (extra)
{
_STRNCPY_A(data.extra_, extra);
}
DataPacket& pdata = allocProtoPacket(lmPayment);
pdata << data;
flushProtoPacket(pdata);
}
void LogSender::LogGameInfo(const char* aid, const char* user_level /*= ""*/,
const char* value /*= ""*/, const char* extra /*= ""*/, const char* kingdom /*= ""*/,
const char* phylum /*= ""*/, const char* classfield /*= ""*/, const char* family /*= ""*/,
const char* genus /*= ""*/,
int flag/* = 3*/)
{
if (stop_log_) return;
LGameInfo data;
memset(&data, 0, sizeof(data));
data.flag_ = flag;
if (aid)
{
_STRNCPY_A(data.aid_, aid);
}
if (user_level)
{
_STRNCPY_A(data.user_level_, user_level);
}
if (value)
{
_STRNCPY_A(data.value_, value);
}
if (extra)
{
_STRNCPY_A(data.extra_, extra);
}
if (kingdom)
{
_STRNCPY_A(data.kingdom_, kingdom);
}
if (phylum)
{
_STRNCPY_A(data.phylum_, phylum);
}
if (classfield)
{
_STRNCPY_A(data.classfield_, classfield);
}
if (family)
{
_STRNCPY_A(data.family_, family);
}
if (genus)
{
_STRNCPY_A(data.genus_, genus);
}
DataPacket& pdata = allocProtoPacket(lmGameInfo);
pdata << data;
flushProtoPacket(pdata);
}
void LogSender::LogChat(const char* aid, const char* name, const char* ip, const char* pf, int actorid, int type,
const char* content, const char* toaid /* = "" */, const char* toname /* = "" */)
{
if (stop_log_) return;
LChat data;
memset(&data, 0, sizeof(data));
if (aid)
{
_STRNCPY_A(data.aid_, aid);
}
if (name)
{
_STRNCPY_A(data.name_, name);
}
if (pf)
{
_STRNCPY_A(data.pf_, pf);
}
if (ip)
{
_STRNCPY_A(data.ip_, ip);
}
data.type_ = type;
data.actorid_ = actorid;
if (content)
{
_STRNCPY_A(data.content_, content);
}
if (toaid)
{
_STRNCPY_A(data.toaid_, toaid);
}
if (toname)
{
_STRNCPY_A(data.toname_, toname);
}
DataPacket& pdata = allocProtoPacket(lmChat);
pdata << data;
flushProtoPacket(pdata);
}
void LogSender::LogOnline(int cnt, int extra)
{
if (stop_log_) return;
DataPacket& pdata = allocProtoPacket(lmOnline);
pdata << (int)cnt;
pdata << (int)extra;
flushProtoPacket(pdata);
}
void LogSender::LogTLog(const char* logstr)
{
if (stop_log_) return;
DataPacket& pdata = allocProtoPacket(lmTLog);
pdata.writeString(logstr);
flushProtoPacket(pdata);
}
void LogSender::LogDKMLog(const char* logstr, const char* pf)
{
if (!logstr || !pf) return;
if (stop_log_) return;
DataPacket& pdata = allocProtoPacket(lmDKMLog);
pdata.writeString(logstr);
pdata.writeString(pf);
flushProtoPacket(pdata);
}