57 lines
1.3 KiB
C
57 lines
1.3 KiB
C
|
|
|
|||
|
|
#pragma once
|
|||
|
|
|
|||
|
|
const int DISTRIBUTE_OUT_TABLE = 6;
|
|||
|
|
|
|||
|
|
struct _WAITUSER
|
|||
|
|
{
|
|||
|
|
int nServerID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20>ִ<EFBFBD> <20>α<EFBFBD><CEB1>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
|||
|
|
UINT nAccountDBID; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ī<EFBFBD><C4AB>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>
|
|||
|
|
ULONG nAddTimeTick; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD>
|
|||
|
|
|
|||
|
|
//need update
|
|||
|
|
USHORT nWaitTicketNum; //Ƽ<>ϳѹ<CFB3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>° <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
_WAITUSER()
|
|||
|
|
{
|
|||
|
|
nServerID = 0;
|
|||
|
|
nAccountDBID = 0;
|
|||
|
|
nAddTimeTick = 0;
|
|||
|
|
nWaitTicketNum = 0;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
class CDNWaitUserManager
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
CDNWaitUserManager();
|
|||
|
|
~CDNWaitUserManager();
|
|||
|
|
|
|||
|
|
bool Initialize(int nMaxuser);
|
|||
|
|
void UpdateCurCount(UINT nCurCount);
|
|||
|
|
|
|||
|
|
bool IsWaitUser(UINT nAccountDBID);
|
|||
|
|
int AddWaitUser(int nServerID, UINT nAccountDBID, USHORT &nLeftTicketNum, USHORT &nLastEstimateCalcTime);
|
|||
|
|
void DelWaitUser(int nServerID, UINT nAccountDBID);
|
|||
|
|
|
|||
|
|
//Calc Estimate Waiting Time
|
|||
|
|
UINT GetWaitUserCount();
|
|||
|
|
UINT GetWorldMaxUser() { return m_nWorldMaxUser; }
|
|||
|
|
USHORT CalcEstimateTime(UINT nLeftWaitUser, UINT nWorldUserCount);
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
CSyncLock m_Sync;
|
|||
|
|
std::list <_WAITUSER> m_WaitUserList;
|
|||
|
|
|
|||
|
|
UINT m_nWorldMaxUser;
|
|||
|
|
UINT m_nWorldPreCurUser;
|
|||
|
|
UINT m_nWorldCurUser;
|
|||
|
|
|
|||
|
|
void WaitUserProcessAsync(UINT nCurCnt);
|
|||
|
|
|
|||
|
|
std::vector <std::pair<int, int>> m_OutList; //first index, second outcount;
|
|||
|
|
void UpdateProcessIndexAsync(int nIndex, int nCount);
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
extern CDNWaitUserManager * g_pWaitUserManager;
|