inetsocket.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00033 #ifndef GWEN_SOCKET_H
00034 #define GWEN_SOCKET_H
00035
00036 #include <gwenhywfar/gwenhywfarapi.h>
00037 #include <gwenhywfar/error.h>
00038 #include <gwenhywfar/inetaddr.h>
00039 #include <gwenhywfar/list1.h>
00040 #include <gwenhywfar/list2.h>
00041
00042
00043 typedef struct GWEN_SOCKET GWEN_SOCKET;
00044 typedef struct GWEN_SOCKETSETSTRUCT GWEN_SOCKETSET;
00045
00046 GWEN_LIST_FUNCTION_LIB_DEFS(GWEN_SOCKET, GWEN_Socket, GWENHYWFAR_API)
00047 GWEN_LIST2_FUNCTION_LIB_DEFS(GWEN_SOCKET, GWEN_Socket, GWENHYWFAR_API)
00048
00049
00050 #ifdef __cplusplus
00051 extern "C" {
00052 #endif
00053
00054
00065 #define GWEN_SOCKET_ERROR_TYPE "Socket"
00066 #define GWEN_SOCKET_ERROR_BAD_SOCKETTYPE (-1)
00067 #define GWEN_SOCKET_ERROR_NOT_OPEN (-2)
00068 #define GWEN_SOCKET_ERROR_TIMEOUT (-3)
00069 #define GWEN_SOCKET_ERROR_IN_PROGRESS (-4)
00070 #define GWEN_SOCKET_ERROR_STARTUP (-5)
00071 #define GWEN_SOCKET_ERROR_INTERRUPTED (-6)
00072 #define GWEN_SOCKET_ERROR_UNSUPPORTED (-7)
00073 #define GWEN_SOCKET_ERROR_ABORTED (-8)
00074 #define GWEN_SOCKET_ERROR_BROKEN_PIPE (-9)
00075
00081 typedef enum {
00082 GWEN_SocketTypeTCP=1,
00083 GWEN_SocketTypeUDP,
00084 GWEN_SocketTypeRAW,
00085 GWEN_SocketTypeUnix,
00086 GWEN_SocketTypeFile
00087 } GWEN_SOCKETTYPE;
00088
00089
00090
00108 GWENHYWFAR_API GWEN_SOCKETSET *GWEN_SocketSet_new();
00109 GWENHYWFAR_API void GWEN_SocketSet_free(GWEN_SOCKETSET *ssp);
00110 GWENHYWFAR_API int GWEN_SocketSet_Clear(GWEN_SOCKETSET *ssp);
00120 GWENHYWFAR_API
00121 int GWEN_SocketSet_AddSocket(GWEN_SOCKETSET *ssp,
00122 const GWEN_SOCKET *sp);
00123 GWENHYWFAR_API
00124 int GWEN_SocketSet_RemoveSocket(GWEN_SOCKETSET *ssp,
00125 const GWEN_SOCKET *sp);
00126 GWENHYWFAR_API int GWEN_SocketSet_HasSocket(GWEN_SOCKETSET *ssp,
00127 const GWEN_SOCKET *sp);
00128 GWENHYWFAR_API int GWEN_SocketSet_GetSocketCount(GWEN_SOCKETSET *ssp);
00129
00131
00146
00150 GWENHYWFAR_API GWEN_SOCKET *GWEN_Socket_new(GWEN_SOCKETTYPE socketType);
00151
00152 GWENHYWFAR_API GWEN_SOCKET *GWEN_Socket_fromFile(int fd);
00153
00157 GWENHYWFAR_API void GWEN_Socket_free(GWEN_SOCKET *sp);
00158
00163 GWENHYWFAR_API int GWEN_Socket_Open(GWEN_SOCKET *sp);
00164
00168 GWENHYWFAR_API int GWEN_Socket_Close(GWEN_SOCKET *sp);
00177 GWENHYWFAR_API
00178 int GWEN_Socket_Connect(GWEN_SOCKET *sp, const GWEN_INETADDRESS *addr);
00179
00180 GWENHYWFAR_API
00181 int GWEN_Socket_Bind(GWEN_SOCKET *sp, const GWEN_INETADDRESS *addr);
00182
00183 GWENHYWFAR_API int GWEN_Socket_Listen(GWEN_SOCKET *sp, int backlog);
00184
00199 GWENHYWFAR_API
00200 int GWEN_Socket_Accept(GWEN_SOCKET *sp,
00201 GWEN_INETADDRESS **addr,
00202 GWEN_SOCKET **newsock);
00203
00213
00218 GWENHYWFAR_API GWEN_SOCKETTYPE GWEN_Socket_GetSocketType(GWEN_SOCKET *sp);
00219
00220
00228 GWENHYWFAR_API
00229 int GWEN_Socket_GetPeerAddr(GWEN_SOCKET *sp,
00230 GWEN_INETADDRESS **addr);
00231
00240 GWENHYWFAR_API
00241 int GWEN_Socket_Select(GWEN_SOCKETSET *rs,
00242 GWEN_SOCKETSET *ws,
00243 GWEN_SOCKETSET *xs,
00244 int timeout);
00245
00251 GWENHYWFAR_API
00252 int GWEN_Socket_WaitForRead(GWEN_SOCKET *sp, int timeout);
00253
00259 GWENHYWFAR_API
00260 int GWEN_Socket_WaitForWrite(GWEN_SOCKET *sp, int timeout);
00270
00281 GWENHYWFAR_API int GWEN_Socket_Read(GWEN_SOCKET *sp,
00282 char *buffer,
00283 int *bsize);
00284
00293 GWENHYWFAR_API int GWEN_Socket_Write(GWEN_SOCKET *sp,
00294 const char *buffer,
00295 int *bsize);
00296
00309 GWENHYWFAR_API
00310 int GWEN_Socket_ReadFrom(GWEN_SOCKET *sp,
00311 GWEN_INETADDRESS **addr,
00312 char *buffer,
00313 int *bsize);
00323 GWENHYWFAR_API
00324 int GWEN_Socket_WriteTo(GWEN_SOCKET *sp,
00325 const GWEN_INETADDRESS *addr,
00326 const char *buffer,
00327 int *bsize);
00341 GWENHYWFAR_API int GWEN_Socket_SetBlocking(GWEN_SOCKET *sp, int fl);
00350 GWENHYWFAR_API int GWEN_Socket_SetBroadcast(GWEN_SOCKET *sp, int fl);
00351
00360 GWENHYWFAR_API int GWEN_Socket_GetSocketError(GWEN_SOCKET *sp);
00361
00370 GWENHYWFAR_API
00371 int GWEN_Socket_SetReuseAddress(GWEN_SOCKET *sp, int fl);
00385 GWENHYWFAR_API
00386 int GWEN_Socket_GetSocketInt(const GWEN_SOCKET *sp);
00387
00388
00391
00394 #ifdef __cplusplus
00395 }
00396 #endif
00397
00398 #endif
00399
00400
00401