DragonNest/Server/DNCashServer/DNManager.cpp

80 lines
1.7 KiB
C++
Raw Normal View History

2024-12-19 09:48:26 +08:00
#include "StdAfx.h"
#include "DNManager.h"
#include "DNUserRepository.h"
CDNManager *g_pManager = NULL;
CDNManager::CDNManager(void)
{
m_pMapUserList.clear();
}
CDNManager::~CDNManager(void)
{
SAFE_DELETE_MAP(m_pMapUserList);
}
CDNUserRepository *CDNManager::AddUser(UINT nAccountDBID)
{
if (nAccountDBID == 0) return NULL;
CDNUserRepository *pUser = GetUser(nAccountDBID);
if (pUser) return pUser;
pUser = new CDNUserRepository;
pUser->SetAccountDBID(nAccountDBID);
ScopeLock<CSyncLock> Lock(m_UserLock);
std::pair<TMapUser::iterator, bool> RetVal = m_pMapUserList.insert(TMapUser::value_type(pUser->GetAccountDBID(), pUser));
if (!RetVal.second) {
delete pUser;
return NULL;
}
m_pMapUserList[pUser->GetAccountDBID()] = pUser; // <20><> <20>ھƹ<DABE><C6B9><EFBFBD><EFBFBD><EFBFBD>.
return pUser;
}
bool CDNManager::DelUser(UINT nAccountDBID)
{
if (m_pMapUserList.empty()) return false;
ScopeLock<CSyncLock> Lock(m_UserLock);
TMapUser::iterator iter = m_pMapUserList.find(nAccountDBID);
if (iter == m_pMapUserList.end()) return false;
CDNUserRepository *pUser = iter->second;
m_pMapUserList.erase(iter);
SAFE_DELETE(pUser);
return true;
}
CDNUserRepository *CDNManager::GetUser(const char* pszAccountName)
{
if (m_pMapUserList.empty()) return NULL;
ScopeLock<CSyncLock> Lock(m_UserLock);
TMapUser::iterator iter;
for (iter = m_pMapUserList.begin(); iter != m_pMapUserList.end(); ++iter){
if (strcmp(iter->second->GetAccountName(), pszAccountName) == 0)
return iter->second;
}
return NULL;
}
CDNUserRepository *CDNManager::GetUser(UINT nAccountDBID)
{
if (m_pMapUserList.empty()) return NULL;
ScopeLock<CSyncLock> Lock(m_UserLock);
TMapUser::iterator iter = m_pMapUserList.find(nAccountDBID);
if (iter == m_pMapUserList.end()) return NULL;
return iter->second;
}