X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a324a7bccf4bda8f4f2bf09daee8104cae953cee..f8c4475a3e579655f6a962822824596a7a9cfb66:/include/wx/gsocket.h diff --git a/include/wx/gsocket.h b/include/wx/gsocket.h index 096cff1666..7190696fd0 100644 --- a/include/wx/gsocket.h +++ b/include/wx/gsocket.h @@ -3,30 +3,19 @@ * Name: gsocket.h * Purpose: GSocket include file (system independent) * CVSID: $Id$ - * Log: $Log$ - * Log: Revision 1.1 1999/07/22 17:51:47 GL - * Log: Added GSocket for Unix (only GTK for the moment) - * Log: Updated wxSocket to use GSocket API - * Log: Added a progress bar to client.cpp - * Log: Added CopyTo to wxMemoryOutputStream to copy the internal buffer to a specified buffer. - * Log: Various changes/fixes to the high-level protocols FTP/HTTP - * Log: Various Unicode fixes - * Log: Removed sckint.* - * Log: - * Log: Revision 1.2 1999/07/18 15:54:28 guilhem - * Log: Copyright, etc. - * Log: * ------------------------------------------------------------------------- */ #ifndef __GSOCKET_H #define __GSOCKET_H +#include "wx/setup.h" + +#if wxUSE_SOCKETS + #include #if !defined(__cplusplus) - typedef int bool; - #endif #ifndef TRUE @@ -59,7 +48,9 @@ typedef enum { GSOCK_INVADDR, GSOCK_INVSOCK, GSOCK_NOHOST, - GSOCK_INVPORT + GSOCK_INVPORT, + GSOCK_TRYAGAIN, + GSOCK_MEMERR } GSocketError; typedef enum { @@ -74,18 +65,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(); @@ -108,7 +106,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. */ @@ -131,22 +129,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. @@ -156,18 +160,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 @@ -175,14 +179,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 */ @@ -193,7 +197,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 @@ -202,7 +206,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, @@ -227,7 +232,11 @@ void GSocket_DoEvent(unsigned long evt_id); #ifdef __cplusplus }; +#endif /* __cplusplus */ + + #endif + /* wxUSE_SOCKETS */ #endif - /* __GSOCKET_H */ + /* __GSOCKET_H */