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

111 lines
3.7 KiB
C++

#ifndef _GSSIMPLECONNECT_H
#define _GSSIMPLECONNECT_H
#include "define.h"
class clGSConnect;
class clConnectElem;
class clConnectList;
class clTCPClient;
class clUNIXClient;
//===================================================================================================
class clSimpleClient
{
private:
clConnectElem* m_pstConnectElem;
GSchar m_szAddress[129];
public:
/* Constructor/Destructor */
clSimpleClient( GSint lAliveDuring, GSint lRcvTimeout,
GSint iUDPSndBuf = 0, GSint iUDPRcvBuf = 0);
~clSimpleClient();
/* To connect on a peer address using TCP */
GSbool ConnectHost(GSchar *szHost, GSushort lPort);
#ifdef LINUX
/* To connect to a peer UNIX process */
GSbool ConnectUNIXHost(GSchar *sSockPipe);
#endif // LINUX
/* Disconnect from peer address */
GSbool Disconnect(GSvoid);
/* Update messages receive/send */
GSbool CheckConnection(GSvoid);
/* To send a message (put in the send queue) (Priority : 0-31) */
GSbool SendGuaranteed( GSubyte ucType, GSubyte ucPriority, GSvoid *pvMessage, GSint lMsgSize);
GSbool SendLostable( GSubyte ucType, GSubyte ucPriority, GSvoid *pvMessage, GSint lMsgSize);
/* To read a message (from the received queue) */
GSvoid* ReadGuaranteed( GSubyte& rucType, GSint& rlSize);
GSvoid* ReadLostable( GSubyte& rucType, GSint& rlSize);
/* IP management */
GSchar* GetPeerIPAddress(GSvoid);
GSchar* GetLocalIPAddress(GSvoid);
// Checks to see if the UDP connection has been established.
// You must call CheckConnection, ReadGuaranteed and ReadLostable
// between calls to IsUDPConnected to generate and send internal messages
// that establish the UDP connection
GSbool IsUDPConnected();
};
//===================================================================================================
class clSimpleServer
{
private:
clConnectList* m_pstConnectList;
GSint m_lConnectedMode;
GSint m_lStillAliveDuring;
GSint m_lRcvDuring;
GSchar m_szAddress[129];
public:
clSimpleServer( GSint lAliveDuring, GSint lRcvTimeout,
GSint iUDPSndBuf = 0, GSint iUDPRcvBuf = 0);
~clSimpleServer();
/* Return the port reserved */
GSbool ReservePort(GSushort lPort);
#ifdef LINUX
/* Puts the UNIX server into listening mode (UNIX Sockets) */
GSbool OpenSocket(GSchar *p_strSockPipe);
#endif // LINUX
/* Return the ID of the new connection */
GSint AcceptConnection(GSvoid);
/* Return the ID of the element disconnected */
GSint CheckDisconnection(GSvoid);
/* To disconnect an element */
GSbool DisconnectElement(GSint lId);
/* To send a message (put in the send queue) (Priority : 0-31) */
GSbool SendGuaranteed( GSint lId, GSubyte ucType, GSubyte ucPriority, GSvoid *pvMessage, GSint lMsgSize);
GSbool SendLostable( GSint lId, GSubyte ucType, GSubyte ucPriority, GSvoid *pvMessage, GSint lMsgSize);
GSbool SendGuaranteedToAll( GSubyte ucType, GSubyte ucPriority, GSvoid *pvMessage, GSint lMsgSize);
GSbool SendLostableToAll( GSubyte ucType, GSubyte ucPriority, GSvoid *pvMessage, GSint lMsgSize);
/* To read a message (from the received queue) */
GSvoid* ReadGuaranteed( GSint& rlId, GSubyte& rucType, GSint& rlSize);
GSvoid* ReadLostable( GSint& rlId, GSubyte& rucType, GSint& rlSize);
/* IP management */
GSchar* GetPeerIPAddress(GSint lId);
// Checks to see if the UDP connection has been established for that
// connection ID. You must call CheckDisconnection, ReadGuaranteed and
// ReadLostable between calls to IsUDPConnected to generate and send internal
// messages that establish the UDP connection
GSbool IsUDPConnected(GSint iID);
};
#endif // _GSSIMPLECONNECT_H