61 lines
1.9 KiB
C++
61 lines
1.9 KiB
C++
#pragma once
|
|
|
|
#include <SolarHashTable.h>
|
|
|
|
class UnitServer;
|
|
|
|
typedef util::SolarHashTable<UnitServer *> UNITSERVER_HASH;
|
|
typedef UNITSERVER_HASH::iterator UNITSERVER_HASH_ITR;
|
|
|
|
class Channel
|
|
{
|
|
enum { DEFAULT_UNITSERVER_POOL_SIZE = 10 };
|
|
|
|
friend class WorldManager;
|
|
friend class World;
|
|
public:
|
|
Channel();
|
|
~Channel();
|
|
|
|
VOID Init( BYTE byWorldKey, BYTE byChannelKey );
|
|
VOID Release();
|
|
|
|
BYTE GetKey() { return m_byChannelKey; }
|
|
|
|
UnitServer * AllocUnitServer( DWORD dwUnitServerKey );
|
|
VOID FreeUnitServer( UnitServer *pUnitServer );
|
|
|
|
// 서버 구동, 종료, 패치
|
|
VOID ExecuteStart( DWORD dwUserKey );
|
|
VOID ExecuteEnd( DWORD dwUserKey );
|
|
BOOL ExecutePatch( DWORD dwUserKey );
|
|
VOID ExecuteForceDisconnect( DWORD dwUserKey );
|
|
VOID SetServerStatus( eSERVER_STATUS status );
|
|
BOOL CheckServerStatus( eSERVER_STATUS CheckStatus );
|
|
|
|
VOID SerializeServerInfoStream( SERVER_TOTAL_INFO & OUT rServerTotInfo );
|
|
VOID SerializeServerInfoStreamForUser( SERVER_TOTAL_INFO & OUT rServerTotInfo, DWORD dwUserGUID );
|
|
VOID SerializeFtpInfoStreamForUser( FTP_TOTAL_INFO & OUT rFtpTotInfo, DWORD dwUserGUID );
|
|
#ifdef __20080312__SOLARAUTH_SERVER_PATCH
|
|
VOID SerializeScriptFolderInfoStream( SCRIPTFOLDER_TOTAL_INFO& OUT rSCFolderTotInfo, DWORD dwUserGUID );
|
|
#endif
|
|
|
|
UnitServer * FindUnitServer( DWORD dwUnitServerKey ) { return m_UnitServerHash.GetData( dwUnitServerKey ); }
|
|
UnitServer * FindUnitServerByAgent( DWORD dwAgentKey, eGAME_SERVER_TYPE byServerType );
|
|
UnitServer * FindUnitServer( eGAME_SERVER_TYPE byServerType, BYTE byServerNum );
|
|
#ifdef _NA_006543_20130318_HEARTBEAT
|
|
//AgentKey 하나로 그 Agent에 속한 채널,서버들을 알기 위한 함수들
|
|
UnitServer * FindFirstUnitServerByAgentKey(DWORD dwAgentKey); // 해당 agentkey를 가진 서버를 하나 리턴
|
|
#endif
|
|
|
|
private:
|
|
BYTE m_byWorldKey;
|
|
BYTE m_byChannelKey;
|
|
|
|
UNITSERVER_HASH m_UnitServerHash;
|
|
CMemoryPoolFactory<UnitServer> *m_pUnitServerPool;
|
|
};
|
|
|
|
|
|
|