111 lines
3.7 KiB
C++
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
|