58 lines
2.0 KiB
C++
58 lines
2.0 KiB
C++
#pragma once
|
|
|
|
#include "ServerInfo.h"
|
|
#include <PacketStruct.h>
|
|
#include <Singleton.h>
|
|
#include <map>
|
|
#include <set>
|
|
#include <list>
|
|
|
|
class UserSession;
|
|
class ServerSession;
|
|
|
|
typedef std::list< ServerInfo* > SERVERINFO_LIST;
|
|
typedef SERVERINFO_LIST::iterator SERVERINFO_LIST_ITER;
|
|
|
|
class ServerInfoManager : public Singleton<ServerInfoManager>
|
|
{
|
|
public:
|
|
ServerInfoManager(void);
|
|
~ServerInfoManager(void);
|
|
|
|
private:
|
|
typedef std::map< DWORD, ServerInfo* > SERVERINFO_MAP;
|
|
typedef SERVERINFO_MAP::iterator SERVERINFO_MAP_ITER;
|
|
|
|
private:
|
|
SERVERINFO_MAP m_mapServerInfo;
|
|
|
|
public:
|
|
BOOL AddServerInfo( ServerInfo* pServerInfo );
|
|
BYTE GetServerInfoNum(){ return (BYTE)m_mapServerInfo.size(); }
|
|
VOID Release();
|
|
ServerInfo* FindServerInfo( DWORD dwServerKey );
|
|
VOID FindServerOnAgent( DWORD dwAgentKey, SERVERINFO_LIST& listServerInfo ); //AgentKey가 같은 서버정보를 구하자.
|
|
ServerInfo* FindServerInfo( DWORD dwAgentKey, BYTE byServerType );
|
|
BYTE GetWorldAgentKey( BYTE byWorld, OUT std::set<DWORD>& setAgentKey );
|
|
BYTE GetChannelAgentKey( BYTE byWorld, BYTE byChannel, OUT std::set<DWORD>& setAgentKey );
|
|
BOOL GetServerInfoForPacket( OUT SERVER_INFO_EX* pServerInfo );
|
|
BOOL GetServerKey( SERVER_INFO* pServerInfo, OUT DWORD& rKey );
|
|
VOID SendPatchFailMessage( UserSession* pSession, DWORD dwAgentKey );
|
|
int GetServerInfoCount(){ return (int)m_mapServerInfo.size(); }
|
|
|
|
VOID ExecuteServerByChannel( BYTE byWorld, BYTE byChannel );
|
|
VOID ExecuteServerByWorld( BYTE byWorld );
|
|
VOID ExecuteServerByServerKey( DWORD dwServerKey );
|
|
|
|
//Server Execute
|
|
private:
|
|
BYTE FindServerInfoByChannel( BYTE byWorld, BYTE byChannel, OUT SERVERINFO_LIST& listServerInfo );
|
|
BYTE FindServerInfoByWorld( BYTE byWorld, OUT SERVERINFO_LIST& listServerInfo );
|
|
VOID ExecuteServerList( SERVERINFO_LIST& listServerInfo ); //서버실행..
|
|
VOID ExecuteServer( ServerSession* pAgentSession, ServerInfo* pServerInfo );
|
|
|
|
public:
|
|
//Stream
|
|
VOID SerializeServerInfoStream( BYTE* pStream, WORD wSize, BOOL bSave );
|
|
};
|