DragonNest/Server/DNMasterServer/DNShandaFCM.cpp
2024-12-19 09:48:26 +08:00

95 lines
2.9 KiB
C++

#include "StdAfx.h"
#include "DNShandaFCM.h"
#include "DNDivisionManager.h"
#include "DNUser.h"
#include "Log.h"
extern TMasterConfig g_Config;
#if defined(_CH) && defined(_FINAL_BUILD)
CDNShandaFCM *g_pShandaFCM = NULL;
int FCM_CallBack(const char* szUserID, const char* szRoleID, int iOnlineMinutes, int iOfflineMinutes)
{
g_Log.Log(LogType::_NORMAL, L"[FCM_CallBack] szUserID:%S szRoleID:%S iOnlineMinutes:%d iOfflineMinutes:%d\r\n", szUserID, szRoleID, iOnlineMinutes, iOfflineMinutes);
WCHAR wszCharName[NAMELENMAX] = { 0, };
MultiByteToWideChar(CP_ACP, 0, szRoleID, -1, wszCharName, NAMELENMAX);
CDNUser *pUser = g_pDivisionManager->GetUserByName(wszCharName);
if (!pUser) return 1;
pUser->SetFCMOnlineMin(iOnlineMinutes);
return 1;
}
void FCM_Switch(int needFCM)
{
g_Config.bFCM = needFCM ? true : false;
g_Log.Log(LogType::_NORMAL, L"[FCM_Switch] needFCM:%d \r\n", needFCM);
}
void FCM_QueryCallBack(const char* szUserID, const char* szRoleID, int iState, int iOnlineMinutes, int iOfflineMinutes)
{
g_Log.Log(LogType::_NORMAL, L"[FCM_QueryCallBack] szUserID:%S szRoleID:%S iState:%d iOnlineMinutes:%d iOfflineMinutes:%d\r\n", szUserID, szRoleID, iState, iOnlineMinutes, iOfflineMinutes);
WCHAR wszCharName[NAMELENMAX] = { 0, };
MultiByteToWideChar(CP_ACP, 0, szRoleID, -1, wszCharName, NAMELENMAX);
CDNUser *pUser = g_pDivisionManager->GetUserByName(wszCharName);
if (!pUser) return;
pUser->SetFCMOnlineMin(iOnlineMinutes);
}
CDNShandaFCM::CDNShandaFCM(void)
{
}
CDNShandaFCM::~CDNShandaFCM(void)
{
}
bool CDNShandaFCM::InitService()
{
// ÇǷεµ ½Ã½ºÅÛ
m_pFCM = CreateSDKInstance();
if (!m_pFCM){
g_Log.Log(LogType::_FILEDBLOG, L"Shanda FCM CreateSDKInstance Fail!!\r\n");
return false;
}
if (!m_pFCM->initFCMSDKEASY(&FCM_CallBack, &FCM_Switch, &FCM_QueryCallBack)){
g_Log.Log(LogType::_FILEDBLOG, L"Shanda FCM initFCMSDKEASY Fail!!\r\n");
return false;
}
g_Log.Log(LogType::_FILEDBLOG, L"CDNShandaFCM::InitService OK!!\r\n");
return true;
}
int CDNShandaFCM::FCMQueryState(const char* szUserID, const char* szRoleID, const char *IPAddr, int *OnlineTimeVal, int *OfflineTimeVal)
{
return m_pFCM->FCMQueryState(szUserID, szRoleID, IPAddr, OnlineTimeVal, OfflineTimeVal);
}
int CDNShandaFCM::FCMQueryStateNoBlock(const char* szUserID, const char* szRoleID, const char *IPAddr)
{
return m_pFCM->FCMQueryStateNoBlock(szUserID, szRoleID, IPAddr);
}
int CDNShandaFCM::FCMIDOnline(const char* szUserID, const char* szRoleID, const char *IPAddr)
{
g_Log.Log(LogType::_NORMAL, L"[FCMIDOnline] szUserID:%S szRoleID:%S Ip:%S\r\n", szUserID, szRoleID, IPAddr);
return m_pFCM->FCMIDOnline(szUserID, szRoleID, IPAddr);
}
int CDNShandaFCM::FCMIDOffline(const char* szUserID, const char* szRoleID, const char *IPAddr)
{
g_Log.Log(LogType::_NORMAL, L"[FCMIDOffline] szUserID:%S szRoleID:%S Ip:%S\r\n", szUserID, szRoleID, IPAddr);
return m_pFCM->FCMIDOffline(szUserID, szRoleID, IPAddr);
}
#endif // _CH