56 lines
1.5 KiB
C++
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;
|
|
};
|