Files
FC1/Ubisoft.com/GSServices/SDKS64/gs-sdk-regserver/include/RegServerLib.h
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

207 lines
7.2 KiB
C++

/***SDOC************************************************************************
* UbiSoft Network Development
* ---------------------------
*
* FILE........: RegServerLib.h
* CREATION....: Sept 2001
* AUTHOR......: Guillaume Plante
*
* DESCRIPTION.: Interface class to login fonctionality
*
*******************************************************************************
* FILE HISTORY
*******************************************************************************
*
* DATE........:
* AUTHOR......:
* DESCRIPTION.:
*
***********************************************************************EDOC***/
#ifndef __CLIENTLIB_H__
#define __CLIENTLIB_H__
#include "define.h"
class clDataList;
class clDataBin;
class clSRPGSClient;
class CRegServerConnection;
class clParentGroups;
class CRegisterServer
{
public:
CRegisterServer();
virtual ~CRegisterServer();
// RegServer public functions
public:
GSvoid RegServer_Engine();
GSbool RegServerSend_RouterConnect( const GSchar* szAddress, GSint lPort );
GSbool RegServerSend_RouterDisconnect();
GSbool RegServerSend_LoginRouter( const GSchar* szAlias,
const GSchar* szPassword, const GSchar* szVersion );
GSbool RegServerSend_RequestParentGroupOnLobby( const GSchar* szGameName );
GSbool RegServerSend_RegisterServerOnLobby(
GSuint uiLobbyID,
GSint iParentID,
const GSchar* szRoomName,
const GSchar* szGameName,
GSushort uwRoomType,
GSuint uiMaxPlayer,
GSuint uiMaxSpectator,
const GSchar* szPassword,
const GSvoid* pstGroupInfo,
GSint iGroupInfoSize,
const GSvoid* pstAltGroupInfo,
GSint iAltGroupInfoSize,
const GSvoid* pstGameData,
GSint iGameDataSize,
GSushort usGamePort,
const GSchar* szGameVersion,
const GSchar* szGSVersion,
GSbool bScoreSubmission,
GSbool bDedicatedServer );
//////////////////////////////
// Lobby Server
//////////////////////////////
GSbool RegServerSend_LobbyServerConnection( const GSchar* szAddress, GSushort usPort,
GSushort usLocalPort = 0, GSuint uiStillAliveDelay = 25, GSuint uiDisconnectionDelay = 120 );
GSbool RegServerSend_LobbyServerClose();
GSbool RegServerSend_LobbyServerLogin( const GSchar* szAlias,GSint iGroupID );
GSbool RegServerSend_LobbyServerMemberJoin( const GSchar* szMember );
GSbool RegServerSend_LobbyServerMemberLeave( const GSchar* szMember );
GSbool RegServerSend_UpdateGroupSettings(
GSint iGroupID,
GSbyte bOpen,
GSbyte bScoreSubmission,
GSbyte bDedicatedServer,
GSint iMaxPlayers,
GSint iMaxSpectator,
const GSchar* szPassword,
const GSvoid* pucGroupInfo,
GSint iGroupInfoSize,
const GSvoid* pucAltGroupInfo,
GSint iAltGroupInfoSize,
const GSvoid* pucGameData,
GSint iGameDataSize,
GSushort usGamePort );
GSbool RegServerSend_MatchStart( GSuint uiMode = 0 );
GSbool RegServerSend_MatchFinish( );
//**************************************************
//virtual Function used for the CallBack
//**************************************************
virtual GSvoid RegServerRcv_LoginRouterResult( GSubyte ucType, GSint lReason,
const GSchar* szIPAddress ) = 0;
virtual GSvoid RegServerRcv_RouterDisconnection() = 0;
virtual GSvoid RegServerRcv_RegisterServerResult( GSubyte pucType,
GSint plReason,
GSint iGroupID,
const GSchar* szAddress,
GSushort usPort,
const GSchar* szSessionName ) = 0;
virtual GSvoid RegServerRcv_RequestParentGroupResult( GSubyte ucType,
GSint lReason, GSint iServerID,GSint iGroupID, const GSchar* szGroupName,
GSuint uiNbPlayers, GSuint uiMaxPlayers ) = 0;
virtual GSvoid RegServerRcv_LobbyServerLoginResults( GSubyte ucType,
GSint iReason, GSint iLobbyServerID, GSint iGroupID ) = 0;
virtual GSvoid RegServerRcv_LobbyServerUpdateGroupSettingsResults(
GSubyte ucType, GSint iReason, GSint iGroupID ) = 0;
virtual GSvoid RegServerRcv_LobbyServerDisconnection() = 0;
virtual GSvoid RegServerRcv_LobbyServerMemberNew( const GSchar* szMember,
GSbool bSpectator,
const GSchar* szIPAddress, const GSchar* szAltIPAddress,
const GSvoid* pPlayerInfo, GSuint uiPlayerInfoSize,
GSushort usPlayerStatus ) = 0;
virtual GSvoid RegServerRcv_LobbyServerMatchStartReply( GSubyte ucType,
GSint iReason, GSint iGroupID ) = 0;
virtual GSvoid RegServerRcv_LobbyServerMemberLeft(const GSchar* szMember ) = 0;
virtual GSvoid RegServerRcv_LobbyServerMatchFinishReply( GSubyte ucType,
GSint iReason, GSint iGroupID ) = 0;
virtual GSvoid RegServerRcv_LobbyServerGroupConfigUpdate(
GSuint uiGroupConfig, GSint iGroupID ) = 0;
virtual GSvoid RegServerRcv_LobbyServerMemberUpdateStatus(
const GSchar* szPlayer, GSushort usPlayerStatus ) = 0;
virtual GSvoid RegServerRcv_LobbyServerNewGroup (GSushort usRoomType,
const GSchar* szRoomName,
GSint iGroupID,
GSint iLobbyServerID,
GSint iParentGroupID,
GSint uiGroupConfig,
GSshort sGroupLevel,
const GSchar* szMaster,
const GSchar* szAllowedGames,
const GSchar* szGame,
const GSvoid* pGroupInfo,
GSuint GroupInfoSize,
GSuint uiMatchEventID,
GSuint uiMaxPlayers,
GSuint uiNbPlayers,
GSuint uiMaxSpectators,
GSuint uiNbSpectators,
const GSchar* szGameVersion,
const GSchar* szGSGameVersion,
const GSchar* szIPAddress,
const GSchar* szAltIPAddress ) = 0;
virtual GSvoid RegServerRcv_LobbyServerMemberUpdateInfo(
const GSchar* szMember, const GSvoid* pPlayerInfo,
GSuint uiPlayerInfoSize ) = 0;
private:
GSvoid RegServer_UnInitRouterConnection();
GSvoid RegServer_UnInitLobbyServerConnection();
GSvoid CheckDisconnection();
GSbool RegServerRcv_LoginRouterResult( GSushort SFType,clDataList* pDataList);
GSbool RegServerRcv_RegisterServerResult( GSushort usFSType,
clDataList* pDataList );
GSbool RegServerRcv_RequestParentGroupResult( GSushort SFType,
clDataList* pDataList );
GSbool CheckLobbyServerConnection();
GSbool ManageLobbyServerConnection();
GSvoid CheckTheLobbyMessages();
GSvoid ReadLobbySeverAnswer( GSubyte ucType, clDataList* pDataList );
GSvoid RegServerRcv_LobbyServerLoginResults( GSuchar ucType,
clDataList* pDataMessage );
GSvoid RegServerRcv_LobbyServerUpdateGroupSettingsResults( GSuchar ucType,
clDataList* pDataMessage );
GSvoid RegServerRcv_LobbyServerNewMembers( clDataList* pDataMessage );
GSvoid RegServerRcv_LobbyServerMatchStartReply( GSuchar ucType,
clDataList* pDataMessage );
GSvoid RegServerRcv_LobbyServerMemberLeft( clDataList* pDataList );
GSvoid RegServerRcv_LobbyServerMatchFinishReply( GSuchar ucType,
clDataList* pDataMessage );
GSvoid RegServerRcv_LobbyServerGroupConfigUpdate( clDataList* pDataMessage );
GSvoid RegServerRcv_LobbyServerMemberUpdateStatus( clDataList* pDataMessage );
GSvoid RegServerRcv_LobbyServerNewGroup ( clDataList* pDataMessage );
GSvoid RegServerRcv_LobbyServerMemberUpdateInfo( clDataList* pDataMessage );
clParentGroups *m_pParentGroups;
GSchar m_szPlayerAlias[NICKNAMELENGTH];
GSchar m_szAddress[IPADDRESSLENGTH];
GSbool m_bServerRegistered;
GSbool m_bLobbyConnected;
GSbool m_bRouterConnected;
GSchar m_szLocalIP[IPADDRESSLENGTH];
CRegServerConnection* m_RouterConnection;
clSRPGSClient* m_pSRPGSClient;
GSint m_iLobbyServerID;
GSint m_iGroupID;
};
#endif //__CLIENTLIB_H__