Files
Sun1602/Tools/SunUpdateManager/SunUpdateServer/ServerInfoManager.h
T
2022-10-26 12:25:11 +08:00

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 );
};