DragonNest/Server/DNCashServer/DNManager.cpp
2024-12-20 16:56:44 +08:00

79 lines
3.6 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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; // 걍 박아버린다.
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;
}