X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dbd300df5c4abfd161e3cc233e87a0a71f544cbe..83413d6d2d4146c7c3ff46be54235d821d212328:/include/wx/gsocket.h?ds=sidebyside diff --git a/include/wx/gsocket.h b/include/wx/gsocket.h index fce739e20e..1c66aa4584 100644 --- a/include/wx/gsocket.h +++ b/include/wx/gsocket.h @@ -8,12 +8,15 @@ #ifndef __GSOCKET_H #define __GSOCKET_H +#include "wx/setup.h" + +#if wxUSE_SOCKETS + +#include #include #if !defined(__cplusplus) - typedef int bool; - #endif #ifndef TRUE @@ -46,7 +49,10 @@ typedef enum { GSOCK_INVADDR, GSOCK_INVSOCK, GSOCK_NOHOST, - GSOCK_INVPORT + GSOCK_INVPORT, + GSOCK_WOULDBLOCK, + GSOCK_TIMEDOUT, + GSOCK_MEMERR } GSocketError; typedef enum { @@ -61,18 +67,25 @@ enum { GSOCK_INPUT_FLAG = 1 << GSOCK_INPUT, GSOCK_OUTPUT_FLAG = 1 << GSOCK_OUTPUT, GSOCK_CONNECTION_FLAG = 1 << GSOCK_CONNECTION, - GSOCK_LOST_FLAG = 1 << GSOCK_LOST, + GSOCK_LOST_FLAG = 1 << GSOCK_LOST }; typedef int GSocketEventFlags; -typedef void (*GSocketFallback)(GSocket *socket, GSocketEvent event, - char *cdata); +typedef void (*GSocketCallback)(GSocket *socket, GSocketEvent event, + char *cdata); #ifdef __cplusplus extern "C" { #endif +/* Global initialisers */ + +/* GSocket_Init() must be called at the beginning */ +bool GSocket_Init(); +/* GSocket_Cleanup() must be called at the ending */ +void GSocket_Cleanup(); + /* Constructors / Destructors */ GSocket *GSocket_new(); @@ -95,7 +108,7 @@ GSocketError GSocket_SetNonOriented(GSocket *socket); /* Server specific parts */ /* - GSocket_SetServer() setup the socket as a server. It uses the "Local" field + GSocket_SetServer() setups the socket as a server. It uses the "Local" field of GSocket. "Local" must be set by GSocket_SetLocal() before GSocket_SetServer() is called. In the other case, it returns GSOCK_INVADDR. */ @@ -118,22 +131,28 @@ GSocketError GSocket_Connect(GSocket *socket, GSocketStream stream); /* Generic IO */ /* Like recv(), send(), ... */ -/* +/* NOTE: In case we read from a non-oriented connection, the incoming (outgoing) - connection address is stored in the "Local" ("Peer") field. + connection address is stored in the "Local" ("Peer") field. */ int GSocket_Read(GSocket *socket, char *buffer, int size); int GSocket_Write(GSocket *socket, const char *buffer, - int size); + int size); bool GSocket_DataAvailable(GSocket *socket); -/* Flags */ +/* Flags/Parameters */ + +/* + GSocket_SetTimeout() sets the timeout for reading and writing IO call. Time + is expressed in milliseconds. + */ +void GSocket_SetTimeout(GSocket *socket, unsigned long millisec); /* GSocket_SetBlocking() puts the socket in non-blocking mode. This is useful if we don't want to wait. */ -void GSocket_SetBlocking(GSocket *socket, bool block); +void GSocket_SetNonBlocking(GSocket *socket, bool non_block); /* GSocket_GetError() returns the last error occured on the socket stream. @@ -143,18 +162,18 @@ GSocketError GSocket_GetError(GSocket *socket); /* Callbacks */ -/* +/* Only one fallback is possible for each event (INPUT, OUTPUT, CONNECTION, LOST) - INPUT: The function is called when there is at least a byte in the + INPUT: The function is called when there is at least a byte in the input buffer OUTPUT: The function is called when the system is sure the next write call will not block CONNECTION: Two cases is possible: Client socket -> the connection is established - Server socket -> a client request a connection + Server socket -> a client request a connection LOST: the connection is lost - SetFallback accepts a combination of these flags so a same callback can + SetCallback accepts a combination of these flags so a same callback can receive different events. An event is generated only once and its state is reseted when the relative @@ -162,14 +181,14 @@ GSocketError GSocket_GetError(GSocket *socket); For example: INPUT -> GSocket_Read() CONNECTION -> GSocket_Accept() */ -void GSocket_SetFallback(GSocket *socket, GSocketEventFlags event, - GSocketFallback fallback, char *cdata); +void GSocket_SetCallback(GSocket *socket, GSocketEventFlags event, + GSocketCallback fallback, char *cdata); /* - UnsetFallback will disables all fallbacks specified by "event". + UnsetCallback will disables all fallbacks specified by "event". NOTE: event may be a combination of flags */ -void GSocket_UnsetFallback(GSocket *socket, GSocketEventFlags event); +void GSocket_UnsetCallback(GSocket *socket, GSocketEventFlags event); /* GAddress */ @@ -180,7 +199,7 @@ void GAddress_destroy(GAddress *address); void GAddress_SetFamily(GAddress *address, GAddressType type); GAddressType GAddress_GetFamily(GAddress *address); -/* +/* The use of any of the next functions will set the address family to the adapted one. For example if you use GAddress_INET_SetHostName, address family will be AF_INET implicitely @@ -189,7 +208,8 @@ GAddressType GAddress_GetFamily(GAddress *address); GSocketError GAddress_INET_SetHostName(GAddress *address, const char *hostname); GSocketError GAddress_INET_SetHostAddress(GAddress *address, unsigned long hostaddr); -GSocketError GAddress_INET_SetPortName(GAddress *address, const char *port); +GSocketError GAddress_INET_SetPortName(GAddress *address, const char *port, + const char *protocol); GSocketError GAddress_INET_SetPort(GAddress *address, unsigned short port); GSocketError GAddress_INET_GetHostName(GAddress *address, char *hostname, @@ -214,7 +234,11 @@ void GSocket_DoEvent(unsigned long evt_id); #ifdef __cplusplus }; +#endif /* __cplusplus */ + + #endif + /* wxUSE_SOCKETS */ #endif - /* __GSOCKET_H */ + /* __GSOCKET_H */