Main Page | Modules | File List | File Members

SimpleConnect.h

00001 #ifndef _GSSIMPLECONNECT_H
00002 #define _GSSIMPLECONNECT_H
00003 #include "define.h"
00004 
00005 class clGSConnect;
00006 class clConnectElem;
00007 class clConnectList;
00008 class clTCPClient;
00009 class clUNIXClient;
00010 
00011 //===================================================================================================
00012 class clSimpleClient
00013 {
00014 private:
00015         clConnectElem* m_pstConnectElem;
00016         GSchar m_szAddress[129];
00017 
00018 public:
00019     /* Constructor/Destructor */
00020     clSimpleClient( GSint lAliveDuring, GSint lRcvTimeout,
00021                     GSint iUDPSndBuf = 0, GSint iUDPRcvBuf = 0);
00022     ~clSimpleClient();
00023   
00024     /* To connect on a peer address using TCP */
00025     GSbool ConnectHost(GSchar *szHost, GSushort lPort);
00026 
00027 #ifdef LINUX
00028         /* To connect to a peer UNIX process */
00029         GSbool ConnectUNIXHost(GSchar *sSockPipe);
00030 #endif // LINUX
00031 
00032     /* Disconnect from peer address */
00033     GSbool Disconnect(GSvoid);
00034 
00035     /* Update messages receive/send */
00036     GSbool CheckConnection(GSvoid);
00037   
00038         /* To send a message (put in the send queue) (Priority : 0-31) */
00039         GSbool SendGuaranteed( GSubyte ucType, GSubyte ucPriority, GSvoid *pvMessage, GSint lMsgSize);
00040         GSbool SendLostable( GSubyte ucType, GSubyte ucPriority, GSvoid *pvMessage, GSint lMsgSize);
00041 
00042         /* To read a message (from the received queue) */
00043     GSvoid* ReadGuaranteed( GSubyte& rucType, GSint& rlSize);
00044     GSvoid* ReadLostable( GSubyte& rucType, GSint& rlSize);
00045 
00046         /* IP management */
00047     GSchar* GetPeerIPAddress(GSvoid);
00048         GSchar* GetLocalIPAddress(GSvoid);
00049         
00050         // Checks to see if the UDP connection has been established.
00051         // You must call CheckConnection, ReadGuaranteed and ReadLostable
00052         // between calls to IsUDPConnected to generate and send internal messages
00053         // that establish the UDP connection
00054         GSbool IsUDPConnected();
00055 };
00056 
00057 //===================================================================================================
00058 class clSimpleServer
00059 {
00060 private:
00061     clConnectList* m_pstConnectList;
00062 
00063     GSint  m_lConnectedMode;
00064     GSint  m_lStillAliveDuring;
00065     GSint  m_lRcvDuring;
00066     GSchar  m_szAddress[129];
00067     
00068 public:
00069     clSimpleServer( GSint lAliveDuring, GSint lRcvTimeout,
00070                     GSint iUDPSndBuf = 0, GSint iUDPRcvBuf = 0);
00071     ~clSimpleServer();
00072     
00073     /* Return the port reserved */
00074     GSbool ReservePort(GSushort lPort);
00075     
00076 #ifdef LINUX
00077     /* Puts the UNIX server into listening mode (UNIX Sockets) */
00078     GSbool OpenSocket(GSchar *p_strSockPipe);
00079 #endif // LINUX
00080     
00081     /* Return the ID of the new connection */
00082     GSint AcceptConnection(GSvoid);
00083     
00084     /* Return the ID of the element disconnected */
00085     GSint CheckDisconnection(GSvoid);
00086 
00087     /* To disconnect an element */
00088     GSbool DisconnectElement(GSint lId);
00089 
00090         /* To send a message (put in the send queue) (Priority : 0-31) */
00091         GSbool SendGuaranteed( GSint lId, GSubyte ucType, GSubyte ucPriority, GSvoid *pvMessage, GSint lMsgSize);
00092         GSbool SendLostable( GSint lId, GSubyte ucType, GSubyte ucPriority, GSvoid *pvMessage, GSint lMsgSize);
00093         GSbool SendGuaranteedToAll( GSubyte ucType, GSubyte ucPriority, GSvoid *pvMessage, GSint lMsgSize);
00094         GSbool SendLostableToAll( GSubyte ucType, GSubyte ucPriority, GSvoid *pvMessage, GSint lMsgSize);
00095 
00096         /* To read a message (from the received queue) */
00097     GSvoid* ReadGuaranteed( GSint& rlId, GSubyte& rucType, GSint& rlSize);
00098     GSvoid* ReadLostable( GSint& rlId, GSubyte& rucType, GSint& rlSize);
00099 
00100         /* IP management */
00101     GSchar* GetPeerIPAddress(GSint lId);
00102                 
00103         // Checks to see if the UDP connection has been established for that
00104         // connection ID.  You must call CheckDisconnection, ReadGuaranteed and
00105         // ReadLostable between calls to IsUDPConnected to generate and send internal
00106         // messages that establish the UDP connection
00107                 GSbool IsUDPConnected(GSint iID);
00108 };
00109 
00110 #endif // _GSSIMPLECONNECT_H

Ubi.com GameService SDK - ©UbiSoft Entertainment 2002
GameService development team