#include "StdAfx.h" #include "UserMap.h" CUserMap::CUserMap(void) { } CUserMap::~CUserMap(void) { } int CUserMap::GetSize() { return m_usermap.size(); } void CUserMap::Add(BILLUSER user) { autolock(m_cs); m_usermap[user.dwBillingGUID] = user; } bool CUserMap::Remove(long nKey) { autolock(m_cs); return m_usermap.erase(nKey); } bool CUserMap::Find(long nGuid, BILLUSER& billingbuser) { autolock(m_cs); stdext::hash_map::iterator itr; itr = m_usermap.find(nGuid); if(m_usermap.end() == itr) return false; else { billingbuser = itr->second; /*billingbuser.RealEndDate = itr->second.RealEndDate; billingbuser.EndDate = itr->second.EndDate; billingbuser.dRestPoint = itr->second.dRestPoint; billingbuser.dRestTime = itr->second.dRestTime; billingbuser.sDeductType = itr->second.sDeductType; billingbuser.dwBillingGUID = itr->second.dwBillingGUID; billingbuser.dwAccountGUID = itr->second.dwAccountGUID;*/ } return true; } void CUserMap::Clear() { autolock(m_cs); m_usermap.clear(); } void CUserMap::GetCloseUsers(LPVOID pSession, std::vector& vec) { autolock(m_cs); BILLINGJOB job; job.jobcode = JOB_LOGOUT; stdext::hash_map::iterator itr; for(itr = m_usermap.begin() ; itr != m_usermap.end() ; itr++) { if(itr->second.pSession == pSession) { job.nBillingGUID = itr->second.dwBillingGUID; vec.push_back(job); } } } void CUserMap::GetAllUsers(std::vector& vec, DWORD dwCurrentTime) { autolock(m_cs); BILLINGJOB job; stdext::hash_map::iterator itr; for(itr = m_usermap.begin() ; itr != m_usermap.end() ; itr++) { if(DEDUCT_TYPE_PERSON_TIME == itr->second.sDeductType || DEDUCT_TYPE_ROON_TIME == itr->second.sDeductType) //Á¤¾× »ç¿ëÀÚ. { if(itr->second.RealEndDate > dwCurrentTime) continue;// Á¤¾×½Ã°£ÀÌ ³²¾ÒÀ¸¸é Àâ¿¡ Ãß°¡ÇÏÁö ¾Ê´Â´Ù. } job.dwAccountGUID = itr->second.dwAccountGUID; job.dwIPAddress = itr->second.dwIPAddress; job.dwRoomGUID = itr->second.dwRoomGUID; job.dwGameCode = itr->second.dwGameCode; job.dwServerType = itr->second.dwServerType; job.nDeductTime = itr->second.nDeductTime; job.sDeductType = itr->second.sDeductType; job.pSession = itr->second.pSession; job.nBillingGUID = itr->second.dwBillingGUID; job.dRestPoint = itr->second.dRestPoint; job.dRestTime = itr->second.dRestTime; job.EndDate = itr->second.EndDate; job.RealEndDate = itr->second.RealEndDate; job.jobcode = JOB_DEDUCT; vec.push_back(job); } } void CUserMap::GetLiveCheckUsers(std::vector& vec) { autolock(m_cs); BILLINGJOB job; job.jobcode = JOB_EXPIRED; stdext::hash_map::iterator itr; for(itr = m_usermap.begin() ; itr != m_usermap.end() ; itr++) { if(DEDUCT_TYPE_PERSON_TIME == itr->second.sDeductType || DEDUCT_TYPE_ROON_TIME == itr->second.sDeductType) { job.dwAccountGUID = itr->second.dwAccountGUID; job.dwIPAddress = itr->second.dwIPAddress; job.dwRoomGUID = itr->second.dwRoomGUID; job.dwGameCode = itr->second.dwGameCode; job.dwServerType = itr->second.dwServerType; job.nDeductTime = itr->second.nDeductTime; job.sDeductType = itr->second.sDeductType; job.pSession = itr->second.pSession; job.nBillingGUID = itr->second.dwBillingGUID; job.dRestPoint = itr->second.dRestPoint; job.dRestTime = itr->second.dRestTime; job.EndDate = itr->second.EndDate; job.RealEndDate = itr->second.RealEndDate; vec.push_back(job); } } }