Files
Sun1602/Server/ShopServer/Uitl/UserMap.h
T
2022-10-26 12:25:11 +08:00

56 lines
1.5 KiB
C++

#pragma once
#include <hash_map>
#include "CriticalSection.h"
typedef struct ST_BILLUSER //빌링 유저 정보 구조체
{
long dwBillingGUID; //빌링 디비에서 사용하는 유니크 아이디
DWORD dwAccountGUID; //아이디 GUID
DWORD dwIPAddress; //클라이언트 아이피 주소
DWORD dwRoomGUID; //PC 방 GUID
DWORD dwGameCode; //게임 코드
DWORD dwServerType; //테섭인지 라이브인지 구분 코드
DWORD RealEndDate; //정액일경우 실제 종료일자 (특정 시간 정액일 경우 적용)
DWORD EndDate; //정액일경우 결재 종료일자
double dRestPoint; //정량일 경우 잔여포인트
double dRestTime; //정량일 경우 시간 (Sec)
short sDeductType; //사용자 차감 유형
long nDeductTime; //차감해야 할 시간
LPVOID pSession; //클라이언트 세션 정보
}BILLUSER, *pBILLUSER;
class CUserMap
{
public:
CUserMap(void);
~CUserMap(void);
//사용자를 추가한다.
void Add(BILLUSER user);
//사용자를 제거한다.
bool Remove(long nKey);
// 맵에서 사용자를 검색한다.
bool Find(long nGuid, BILLUSER& billingbuser);
// 맵을 초기화 한다.
void Clear();
// 현재 유저 수를 리턴한다.
int GetSize();
//세션이 종료된 사용자들을 돌려준다.
void GetCloseUsers(LPVOID pSession, std::vector<BILLINGJOB>& vec);
//모든 유져를 가져온다.
void GetAllUsers(std::vector<BILLINGJOB>& vec, DWORD dwCurrentTime);
//라이브 체크 유저를 가져온다.
void GetLiveCheckUsers(std::vector<BILLINGJOB>& vec);
private:
stdext::hash_map<long, BILLUSER> m_usermap;
//동기화 관련객체
WZPUBLIC::CriticalSection m_cs;
};