Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
291
Server/RylServerProject/RylUIDServer/Billing_HanUnited.cpp
Normal file
291
Server/RylServerProject/RylUIDServer/Billing_HanUnited.cpp
Normal file
@@ -0,0 +1,291 @@
|
||||
#include "stdafx.h"
|
||||
#include "UserIDTable.h"
|
||||
#include "UIDAgentDispatch.h"
|
||||
#include "SendAgentPacket.h"
|
||||
|
||||
#include "HanUnitedBilling.h"
|
||||
#include "HanUnitedDisconnID.h"
|
||||
|
||||
#include <Log/ServerLog.h>
|
||||
#include <Network/Packet/PacketStruct/ServerPacket.h>
|
||||
#include <Utility/Setup/ServerSetup.h>
|
||||
#include <DB/DBComponent.h>
|
||||
#include <DB/BillingDBComponent.h>
|
||||
|
||||
#include <Utility/Debug/PerformanceCheck.h>
|
||||
|
||||
// <20>Ѱ<EFBFBD><D1B0><EFBFBD> <20><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> ó<><C3B3>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD><CFB0><EFBFBD> <20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD> --;;
|
||||
bool CUIDAgentDispatch::ProcessBillingHanUnited(PktUUT* lpPktUUT)
|
||||
{
|
||||
unsigned char Cmd = lpPktUUT->m_cCmd;
|
||||
unsigned long ServerID = lpPktUUT->m_dwServerID;
|
||||
unsigned long SessionID = lpPktUUT->m_dwSessionID;
|
||||
unsigned long UserID = lpPktUUT->m_dwUserID;
|
||||
unsigned long CharID = lpPktUUT->m_dwCharID;
|
||||
char *AccountName = lpPktUUT->m_strAccount;
|
||||
IN_ADDR& IPAddress = lpPktUUT->m_IPAddress;
|
||||
|
||||
// <20>Ѱ<EFBFBD><D1B0><EFBFBD> ó<><C3B3> <20><>ƾ
|
||||
switch(Cmd)
|
||||
{
|
||||
case PktUUT::UpdateUIDTableUserLogin:
|
||||
{
|
||||
CPerformanceInstrument userLogin("UserLogin");
|
||||
CAutoInstrument autoInstrument(userLogin);
|
||||
|
||||
// Ű<><C5B0> <20><><EFBFBD><EFBFBD> ó<><C3B3>
|
||||
RE_USPCheckBilling_Login GetData = {0,};
|
||||
|
||||
char Check = CServerSetup::GetInstance().GetFreeCheck() ? 1 : 0; // <20>⺻(=0), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(=1)
|
||||
if(!DBComponent::BillingDB::USPCheckBilling_Login_Post(CDBSingleObject::GetInstance(),
|
||||
AccountName, UserID, Check, inet_ntoa(IPAddress), GetGroup(), &GetData))
|
||||
{
|
||||
SERLOG6(g_Log, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(%u) [%s] <20><><EFBFBD><EFBFBD>(0x%08x) ST:%d USPCheckBilling_Login_Post ȣ<><C8A3> <20><><EFBFBD><EFBFBD> %s : %s",
|
||||
UserID, AccountName, ServerID, Cmd, inet_ntoa(IPAddress), CDBSingleObject::GetInstance().GetErrorString());
|
||||
|
||||
// DB Query<72><79><EFBFBD><EFBFBD>(Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 1<><31> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>) <20><EFBFBD>
|
||||
AgentSendPacket::SendUpdateUIDTable(GetGroup(), Cmd, UserID, 4, 0, 0, 'N', 0, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ Ack
|
||||
if(FALSE == CServerSetup::GetInstance().GetIgnoreFlag())
|
||||
{
|
||||
if(1 == GetData.Flag && PktUUT::DISCONNECT_USER == lpPktUUT->GetError())
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ְ<EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̱<EFBFBD> <20>÷<EFBFBD><C3B7>װ<EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>δ<EFBFBD>.
|
||||
AgentSendPacket::SendHanUnitedUserKill(GetData.intCRMIndex1, AccountName, 0);
|
||||
}
|
||||
|
||||
if(2 <= GetData.Flag)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ<C3BC><C5A9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
GET_SINGLE_DISPATCH(lpHanUnitedDispatch, CHanUnitedDispatch,
|
||||
CHanUnitedDispatch::GetDispatchTable());
|
||||
|
||||
if(0 == lpHanUnitedDispatch ||
|
||||
!lpHanUnitedDispatch->SendCanLogin(*lpPktUUT, GetData, GetGroup()))
|
||||
{
|
||||
SERLOG5(g_Log, "ID:%s/IP:%s/UID:%u/CID:%u/ServerID:0x%08x/<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.",
|
||||
lpPktUUT->m_strAccount, inet_ntoa(lpPktUUT->m_IPAddress),
|
||||
lpPktUUT->m_dwUserID, lpPktUUT->m_dwCharID, ServerID);
|
||||
|
||||
AgentSendPacket::SendUpdateUIDTable(GetGroup(), Cmd, UserID, 4, 0, 0, 'N', 0, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// DB<44><42><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
AgentSendPacket::SendUpdateUIDTable(GetGroup(), Cmd,
|
||||
UserID, GetData.Flag, GetData.PlayTime, GetData.intCRMIndex1,
|
||||
GetData.strBillingType[0], 0, lpPktUUT->GetError());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(1 == GetData.Flag && PktUUT::DISCONNECT_USER == lpPktUUT->GetError())
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ְ<EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̱<EFBFBD> <20>÷<EFBFBD><C3B7>װ<EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>δ<EFBFBD>.
|
||||
AgentSendPacket::SendHanUnitedUserKill(GetData.intCRMIndex1, AccountName, 0);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>. <20><> <20>ߺ<EFBFBD><DFBA>α<EFBFBD><CEB1><EFBFBD><EFBFBD≯<EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20>Ѵ<EFBFBD>.
|
||||
AgentSendPacket::SendUpdateUIDTable(GetGroup(), Cmd,
|
||||
UserID, (1 == GetData.Flag) ? 1 : 0, GetData.PlayTime, GetData.intCRMIndex1,
|
||||
GetData.strBillingType[0], 0, lpPktUUT->GetError());
|
||||
}
|
||||
|
||||
DETLOG7(g_Log, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(%u) [%s] <20><><EFBFBD><EFBFBD>(0x%08x) ST:%d USPCheckBilling_Login_Post ȣ<><C8A3> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>. %u, %u [%s]",
|
||||
UserID, AccountName, ServerID, Cmd, GetData.Flag, GetData.intCRMIndex1, inet_ntoa(IPAddress));
|
||||
}
|
||||
break;
|
||||
|
||||
case PktUUT::UpdateUIDTableCharLogin:
|
||||
{
|
||||
CPerformanceInstrument charLogin("CharLogin");
|
||||
CAutoInstrument autoInstrument(charLogin);
|
||||
|
||||
// Ű<><C5B0> <20><><EFBFBD><EFBFBD> ó<><C3B3>
|
||||
RE_USPCheckBilling_Login GetData = {0,};
|
||||
|
||||
char Check = CServerSetup::GetInstance().GetFreeCheck() ? 1 : 0; // <20>⺻(=0), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(=1)
|
||||
if(!DBComponent::BillingDB::USPCheckBilling_CharIDLogin_Post(CDBSingleObject::GetInstance(),
|
||||
AccountName, UserID, Check, inet_ntoa(IPAddress), GetGroup(), &GetData))
|
||||
{
|
||||
SERLOG6(g_Log, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(%u) [%s] <20><><EFBFBD><EFBFBD>(0x%08x) ST:%d USPCheckBilling_CharIDLogin_Post ȣ<><C8A3> <20><><EFBFBD><EFBFBD> %s : %s",
|
||||
UserID, AccountName, ServerID, Cmd, inet_ntoa(IPAddress), CDBSingleObject::GetInstance().GetErrorString());
|
||||
|
||||
// DB Query<72><79><EFBFBD><EFBFBD>(Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 1<><31> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>) <20><EFBFBD>
|
||||
AgentSendPacket::SendUpdateUIDTable(GetGroup(), Cmd, UserID, 4, 0, 0, 'N', 0, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ Ack
|
||||
if(FALSE == CServerSetup::GetInstance().GetIgnoreFlag())
|
||||
{
|
||||
if(2 <= GetData.Flag)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ<C3BC><C5A9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
GET_SINGLE_DISPATCH(lpHanUnitedDispatch, CHanUnitedDispatch,
|
||||
CHanUnitedDispatch::GetDispatchTable());
|
||||
|
||||
if(0 == lpHanUnitedDispatch ||
|
||||
!lpHanUnitedDispatch->SendLogin(*lpPktUUT, GetData, GetGroup()))
|
||||
{
|
||||
SERLOG5(g_Log, "ID:%s/IP:%s/UID:%u/CID:%u/ServerID:0x%08x/<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.",
|
||||
lpPktUUT->m_strAccount, inet_ntoa(lpPktUUT->m_IPAddress),
|
||||
lpPktUUT->m_dwUserID, lpPktUUT->m_dwCharID, ServerID);
|
||||
|
||||
AgentSendPacket::SendUpdateUIDTable(GetGroup(), Cmd, UserID, 4, 0, 0, 'N', 0, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// DB<44><42><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
AgentSendPacket::SendUpdateUIDTable(GetGroup(), Cmd,
|
||||
UserID, GetData.Flag, GetData.PlayTime, GetData.intCRMIndex1, GetData.strBillingType[0], 0, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
AgentSendPacket::SendUpdateUIDTable(GetGroup(), Cmd,
|
||||
UserID, 0, GetData.PlayTime, GetData.intCRMIndex1, GetData.strBillingType[0], 0, 0);
|
||||
}
|
||||
|
||||
DETLOG7(g_Log, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(%u) [%s] <20><><EFBFBD><EFBFBD>(0x%08x) ST:%d USPCheckBilling_CharIDLogin_Post ȣ<><C8A3> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>. %u, %u [%s]",
|
||||
UserID, AccountName, ServerID, Cmd, GetData.Flag, GetData.intCRMIndex1, inet_ntoa(IPAddress));
|
||||
}
|
||||
break;
|
||||
|
||||
case PktUUT::UpdateUIDTableUserLogout:
|
||||
case PktUUT::UpdateUIDTableCharLogout:
|
||||
|
||||
// <20><> <20>̻<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾƵ<CABE> <20>ȴ<EFBFBD>.
|
||||
CHanUnitedDisconnectID::GetInstance().RemoveDisconnectInfo(UserID);
|
||||
|
||||
case PktUUT::UpdateUIDTableUserMove:
|
||||
case PktUUT::UpdateUIDTableCharMove:
|
||||
|
||||
{
|
||||
CPerformanceInstrument logout("Logout");
|
||||
CAutoInstrument autoInstrument(logout);
|
||||
|
||||
// Ű<><C5B0> ó<><C3B3>
|
||||
unsigned long Return = 0;
|
||||
|
||||
if(!DBComponent::BillingDB::USPCheckBilling_LogOut_Post(CDBSingleObject::GetInstance(), AccountName, &Return))
|
||||
{
|
||||
SERLOG5(g_Log, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(%u) [%s] <20><><EFBFBD><EFBFBD>(0x%08x) ST:%d USPCheckBilling_LogOut_Post ȣ<><C8A3> <20><><EFBFBD><EFBFBD> : %s",
|
||||
UserID, AccountName, ServerID, Cmd, CDBSingleObject::GetInstance().GetErrorString());
|
||||
return true;
|
||||
}
|
||||
|
||||
if(0 != Return && 10 != Return)
|
||||
{
|
||||
SERLOG5(g_Log, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(%u) [%s] <20><><EFBFBD><EFBFBD>(0x%08x) ST:%d USPCheckBilling_LogOut_Post ȣ<><C8A3> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. %u",
|
||||
UserID, AccountName, ServerID, Cmd, Return);
|
||||
}
|
||||
else
|
||||
{
|
||||
DETLOG5(g_Log, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(%u) [%s] <20><><EFBFBD><EFBFBD>(0x%08x) ST:%d USPCheckBilling_LogOut_Post ȣ<><C8A3> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>. %u",
|
||||
UserID, AccountName, ServerID, Cmd, Return);
|
||||
|
||||
if(10 == Return)
|
||||
{
|
||||
if(!CHanUnitedLogout::GetInstance().AddLogout(*lpPktUUT))
|
||||
{
|
||||
SERLOG5(g_Log, "ID:%s/IP:%s/UID:%u/CID:%u/ServerID:0x%08x/<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>αƿ<D7BE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.",
|
||||
lpPktUUT->m_strAccount, inet_ntoa(lpPktUUT->m_IPAddress),
|
||||
lpPktUUT->m_dwUserID, lpPktUUT->m_dwCharID, ServerID);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
SERLOG1(g_Log, "<EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD>(%d)<29><> <20><><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>ϴ<EFBFBD>.", Cmd);
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CUIDAgentDispatch::ProcessDisconnectHanUnited()
|
||||
{
|
||||
// <20>Ѱ<EFBFBD><D1B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD>, <20>Ѱ<EFBFBD><D1B0><EFBFBD> <20><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
unsigned long Result = 0;
|
||||
|
||||
// TODO : <20>αƿ<D7BE> ó<><C3B3>.
|
||||
if(!DBComponent::BillingDB::USPDisConnectLogOut_Post(CDBSingleObject::GetInstance(), m_Group))
|
||||
{
|
||||
SERLOG3(g_Log, "%d <20><EFBFBD> <20>αƿ<D7BE> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:0x%08x DB<44><42><EFBFBD><EFBFBD> <20>α<EFBFBD>:%s",
|
||||
m_Group, Result, CDBSingleObject::GetInstance().GetErrorString());
|
||||
}
|
||||
else
|
||||
{
|
||||
#pragma pack(1)
|
||||
|
||||
struct HanUnitedBillingUser
|
||||
{
|
||||
char m_szID[20];
|
||||
char m_szIP[15];
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
GET_SINGLE_DISPATCH(lpHanUnitedDispatch, CHanUnitedDispatch,
|
||||
CHanUnitedDispatch::GetDispatchTable());
|
||||
|
||||
HanUnitedBillingUser hanUnitedBillingUser[OleDB::MaxRowNum];
|
||||
memset(&hanUnitedBillingUser, 0, sizeof(HanUnitedBillingUser) * OleDB::MaxRowNum);
|
||||
|
||||
PktUUT pktUUT;
|
||||
memset(&pktUUT, 0, sizeof(PktUUT));
|
||||
|
||||
int nGetRow = 0;
|
||||
while(CDBSingleObject::GetInstance().GetData((void**)hanUnitedBillingUser,
|
||||
sizeof(HanUnitedBillingUser), OleDB::MaxRowNum, &nGetRow))
|
||||
{
|
||||
if(0 == nGetRow)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
HanUnitedBillingUser* lpBillingUser = hanUnitedBillingUser;
|
||||
HanUnitedBillingUser* lpBillingUserEnd = hanUnitedBillingUser + nGetRow;
|
||||
|
||||
for(; lpBillingUser != lpBillingUserEnd; ++lpBillingUser)
|
||||
{
|
||||
_snprintf(pktUUT.m_strAccount,
|
||||
PktUUT::MaxAccountLen, "%s", lpBillingUser->m_szID);
|
||||
pktUUT.m_strAccount[PktUUT::MaxAccountLen - 1] = 0;
|
||||
|
||||
pktUUT.m_IPAddress.S_un.S_addr = inet_addr(lpBillingUser->m_szIP);
|
||||
|
||||
if(!CHanUnitedLogout::GetInstance().AddLogout(pktUUT))
|
||||
{
|
||||
SERLOG3(g_Log, "ID:%s/IP:%s/ServerGroup:%d/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>αƿ<D7BE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.",
|
||||
lpBillingUser->m_szID, lpBillingUser->m_szIP, m_Group);
|
||||
}
|
||||
}
|
||||
|
||||
memset(&hanUnitedBillingUser, 0, sizeof(HanUnitedBillingUser) * OleDB::MaxRowNum);
|
||||
}
|
||||
|
||||
SERLOG1(g_Log, "%d <20><EFBFBD> USPDisConnectLogOut ȣ<><C8A3> <20><><EFBFBD><EFBFBD>", m_Group);
|
||||
|
||||
if(!DBComponent::BillingDB::USPServer_End(CDBSingleObject::GetInstance(), m_Group, &Result))
|
||||
{
|
||||
SERLOG3(g_Log, "%d <20><EFBFBD> <20>αƿ<D7BE> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:0x%08x DB<44><42><EFBFBD><EFBFBD> <20>α<EFBFBD>:%s",
|
||||
m_Group, Result, CDBSingleObject::GetInstance().GetErrorString());
|
||||
}
|
||||
else
|
||||
{
|
||||
SERLOG1(g_Log, "%d <20><EFBFBD> USEServer_End ȣ<><C8A3> <20><><EFBFBD><EFBFBD>", m_Group);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user