DragonNest/Server/ServerCommon/TH/DNAsiaSoftOTPManager.cpp
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

90 lines
No EOL
1.9 KiB
C++

#include "Stdafx.h"
#include "DNAsiaSoftOTPManager.h"
#include "DNAsiaSoftOTP.h"
#include "Log.h"
#include "Util.h"
#if defined(_TH) && defined(_FINAL_BUILD)
CDNAsiaSoftOTPManager * g_pAsiaSoftOTPManager = NULL;
CDNAsiaSoftOTPManager::CDNAsiaSoftOTPManager()
{
memset(m_szIP, 0, sizeof(m_szIP));
m_nPort = 0;
m_nConnectionCount = 0;
}
CDNAsiaSoftOTPManager::~CDNAsiaSoftOTPManager()
{
SAFE_DELETE_PVEC(m_vAsiaSoftOTPList);
}
bool CDNAsiaSoftOTPManager::Init(const char * pszIP, int nPort, int nWorkerThreadSize)
{
if (pszIP == NULL)
{
g_Log.Log(LogType::_ERROR, L"CDNAsiaSoftOTPManager Init Fail!\n");
return false;
}
if (m_nConnectionCount != 0)
{
g_Log.Log(LogType::_ERROR, L"CDNAsiaSoftOTPManager ReInit! Check!!\n");
return false;
}
_strcpy(m_szIP, IPLENMAX, pszIP, IPLENMAX);
m_nPort = nPort;
SYSTEM_INFO SysInfo;
GetSystemInfo(&SysInfo);
m_nConnectionCount = nWorkerThreadSize == 0 ? (SysInfo.dwNumberOfProcessors * 2) + 1 : nWorkerThreadSize;
for (int i = 0; i < m_nConnectionCount; i++)
{
CDNAsiaSoftOTP * pOTP = new CDNAsiaSoftOTP(m_szIP, m_nPort);
m_vAsiaSoftOTPList.push_back(pOTP);
}
return true;
}
bool CDNAsiaSoftOTPManager::SendOTP(const char * pDomain, const char * pMasterAkeyID, const char * pszResponse, UINT nSessionID)
{
if (pDomain == NULL || pMasterAkeyID == NULL || pszResponse == NULL || nSessionID == 0)
return false;
CDNAsiaSoftOTP * pOTP = _GetFreeOTP();
if (pOTP)
{
if (pOTP->Connect())
{
pOTP->SetValue(pDomain, pMasterAkeyID, pszResponse, nSessionID);
return true;
}
}
return false;
}
CDNAsiaSoftOTP * CDNAsiaSoftOTPManager::_GetFreeOTP()
{
ULONG nStartTick = timeGetTime();
CDNAsiaSoftOTP * pOTP = NULL;
while (pOTP == NULL)
{
for (int i = 0; i < m_nConnectionCount; i++)
{
if (m_vAsiaSoftOTPList[i]->GetLock())
return m_vAsiaSoftOTPList[i];
}
if (nStartTick + AsiaAuth::Common::OTPTimeOut < timeGetTime())
break;
}
return NULL;
}
#endif //#ifdef _TH