134 lines
3.5 KiB
C++
134 lines
3.5 KiB
C++
|
|
|
|||
|
|
#include "stdafx.h"
|
|||
|
|
#include "DNUserDeleteManager.h"
|
|||
|
|
#include "Util.h"
|
|||
|
|
#include "DNManager.h"
|
|||
|
|
|
|||
|
|
CDNUserDeleteManager* g_pUserDeleteManager = NULL;
|
|||
|
|
|
|||
|
|
|
|||
|
|
CDNUserDeleteManager::CDNUserDeleteManager()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool CDNUserDeleteManager::Add(UINT pAccountDBID, bool bDoLock)
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(0 != pAccountDBID, "Invalid!");
|
|||
|
|
|
|||
|
|
TP_LOCK* pLock = (bDoLock)?(&m_Lock):(NULL);
|
|||
|
|
if (pLock) {
|
|||
|
|
DN_ASSERT(!m_Lock.IsLock(), "Already Locked!"); // !!! <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ܺο<DCBA><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʾƾ<CABE> <20><>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
TP_LOCKAUTO aLock(pLock);
|
|||
|
|
if (!pLock) {
|
|||
|
|
DN_ASSERT(m_Lock.IsLock(), "Not Locked!"); // !!! <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ܺο<DCBA><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD> <20><>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
std::pair<TP_LIST_ITR, bool> aRetVal = m_List.insert(TP_LIST::value_type(pAccountDBID, USERDELDAT(pAccountDBID)));
|
|||
|
|
if (!aRetVal.second) {
|
|||
|
|
USERDELDAT* aUserDelDat = (&(aRetVal.first->second));
|
|||
|
|
DN_ASSERT(NULL != aUserDelDat, "Invalid!");
|
|||
|
|
DN_ASSERT(aUserDelDat->IsSet(), "Invalid!");
|
|||
|
|
|
|||
|
|
// <20>̹<EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݸ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
aUserDelDat->SetTick();
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDNUserDeleteManager::Remove(UINT pAccountDBID, bool bDoLock)
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(0 != pAccountDBID, "Invalid!");
|
|||
|
|
|
|||
|
|
TP_LOCK* pLock = (bDoLock)?(&m_Lock):(NULL);
|
|||
|
|
if (pLock) {
|
|||
|
|
DN_ASSERT(!m_Lock.IsLock(), "Already Locked!"); // !!! <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ܺο<DCBA><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʾƾ<CABE> <20><>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
TP_LOCKAUTO aLock(pLock);
|
|||
|
|
if (!pLock) {
|
|||
|
|
DN_ASSERT(m_Lock.IsLock(), "Not Locked!"); // !!! <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ܺο<DCBA><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD> <20><>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_List.erase(pAccountDBID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool CDNUserDeleteManager::IsExist(UINT pAccountDBID, bool bDoLock) const
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(0 != pAccountDBID, "Invalid!");
|
|||
|
|
|
|||
|
|
TP_LOCK* pLock = (bDoLock)?(&m_Lock):(NULL);
|
|||
|
|
if (pLock) {
|
|||
|
|
DN_ASSERT(!m_Lock.IsLock(), "Already Locked!"); // !!! <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ܺο<DCBA><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʾƾ<CABE> <20><>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
TP_LOCKAUTO aLock(pLock);
|
|||
|
|
if (!pLock) {
|
|||
|
|
DN_ASSERT(m_Lock.IsLock(), "Not Locked!"); // !!! <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ܺο<DCBA><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD> <20><>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
TP_LIST_CTR aIt = m_List.find(pAccountDBID);
|
|||
|
|
if (m_List.end() != aIt) {
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDNUserDeleteManager::GetList(TP_LISTAUTO& pList, bool bDoLock) const
|
|||
|
|
{
|
|||
|
|
TP_LOCK* pLock = (bDoLock)?(&m_Lock):(NULL);
|
|||
|
|
if (pLock) {
|
|||
|
|
DN_ASSERT(!m_Lock.IsLock(), "Already Locked!"); // !!! <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ܺο<DCBA><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʾƾ<CABE> <20><>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
TP_LOCKAUTO aLock(pLock);
|
|||
|
|
if (!pLock) {
|
|||
|
|
DN_ASSERT(m_Lock.IsLock(), "Not Locked!"); // !!! <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ܺο<DCBA><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD> <20><>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
TP_LIST_CTR aIt = m_List.begin();
|
|||
|
|
for (; m_List.end() != aIt ; ++aIt) {
|
|||
|
|
pList.push_back(aIt->second);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDNUserDeleteManager::DoUpdate()
|
|||
|
|
{
|
|||
|
|
DN_ASSERT(!m_Lock.IsLock(), "Invalid!");
|
|||
|
|
|
|||
|
|
// <20><> <20><><EFBFBD><EFBFBD> - <20><> <20><EFBFBD><DEBC><EFBFBD><EFBFBD><EFBFBD> CDNUserRepository <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ ó<><C3B3> <20>κа<CEBA> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>忡<EFBFBD><E5BFA1> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD> <20><>
|
|||
|
|
|
|||
|
|
TP_LISTAUTO aList;
|
|||
|
|
{
|
|||
|
|
TP_LOCKAUTO aLock(&m_Lock);
|
|||
|
|
|
|||
|
|
GetList(aList, false);
|
|||
|
|
}
|
|||
|
|
if (aList.empty()) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
DWORD aCurTick = ::GetTickCount();
|
|||
|
|
|
|||
|
|
TP_LISTAUTO_CTR aIt = aList.begin();
|
|||
|
|
for (; aList.end() != aIt ; ++aIt) {
|
|||
|
|
const USERDELDAT* aUserDelDat = (&(*aIt));
|
|||
|
|
DN_ASSERT(NULL != aUserDelDat, "Invalid!");
|
|||
|
|
DN_ASSERT(aUserDelDat->IsSet(), "Invalid!");
|
|||
|
|
|
|||
|
|
if (CASHDELUSERDELAY_LIMITTICK <= GetTickTerm(aUserDelDat->m_OldTick, aCurTick)) {
|
|||
|
|
bool bRetVal = g_pManager->DelUser(aUserDelDat->m_AccountDBID);
|
|||
|
|
if (!bRetVal) {
|
|||
|
|
// ??
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Remove(aUserDelDat->m_AccountDBID, true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|