gwenhywfar  4.14.0
inetsocket.h
Go to the documentation of this file.
1 /***************************************************************************
2  $RCSfile$
3  -------------------
4  cvs : $Id$
5  begin : Tue Oct 02 2002
6  copyright : (C) 2002 by Martin Preuss
7  email : martin@libchipcard.de
8 
9  ***************************************************************************
10  * *
11  * This library is free software; you can redistribute it and/or *
12  * modify it under the terms of the GNU Lesser General Public *
13  * License as published by the Free Software Foundation; either *
14  * version 2.1 of the License, or (at your option) any later version. *
15  * *
16  * This library is distributed in the hope that it will be useful, *
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
19  * Lesser General Public License for more details. *
20  * *
21  * You should have received a copy of the GNU Lesser General Public *
22  * License along with this library; if not, write to the Free Software *
23  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
24  * MA 02111-1307 USA *
25  * *
26  ***************************************************************************/
27 
33 #ifndef GWEN_SOCKET_H
34 #define GWEN_SOCKET_H
35 
37 #include <gwenhywfar/error.h>
38 #include <gwenhywfar/inetaddr.h>
39 #include <gwenhywfar/list1.h>
40 #include <gwenhywfar/list2.h>
41 
42 
43 typedef struct GWEN_SOCKET GWEN_SOCKET;
44 typedef struct GWEN_SOCKETSETSTRUCT GWEN_SOCKETSET;
45 
48 
49 
50 #ifdef __cplusplus
51 extern "C" {
52 #endif
53 
54 
65 #define GWEN_SOCKET_ERROR_TYPE "Socket"
66 #define GWEN_SOCKET_ERROR_BAD_SOCKETTYPE (-1)
67 #define GWEN_SOCKET_ERROR_NOT_OPEN (-2)
68 #define GWEN_SOCKET_ERROR_TIMEOUT (-3)
69 #define GWEN_SOCKET_ERROR_IN_PROGRESS (-4)
70 #define GWEN_SOCKET_ERROR_STARTUP (-5)
71 #define GWEN_SOCKET_ERROR_INTERRUPTED (-6)
72 #define GWEN_SOCKET_ERROR_UNSUPPORTED (-7)
73 #define GWEN_SOCKET_ERROR_ABORTED (-8)
74 #define GWEN_SOCKET_ERROR_BROKEN_PIPE (-9)
75 
81 typedef enum {
87 }
89 
90 
91 
123  const GWEN_SOCKET *sp);
126  const GWEN_SOCKET *sp);
128  const GWEN_SOCKET *sp);
130 
132 /*end of group socketset */
147 
151 GWENHYWFAR_API GWEN_SOCKET *GWEN_Socket_new(GWEN_SOCKETTYPE socketType);
152 
153 GWENHYWFAR_API GWEN_SOCKET *GWEN_Socket_fromFile(int fd);
154 
158 GWENHYWFAR_API void GWEN_Socket_free(GWEN_SOCKET *sp);
159 
164 GWENHYWFAR_API int GWEN_Socket_Open(GWEN_SOCKET *sp);
165 
169 GWENHYWFAR_API int GWEN_Socket_Close(GWEN_SOCKET *sp);
179 int GWEN_Socket_Connect(GWEN_SOCKET *sp, const GWEN_INETADDRESS *addr);
180 
182 int GWEN_Socket_Bind(GWEN_SOCKET *sp, const GWEN_INETADDRESS *addr);
183 
184 GWENHYWFAR_API int GWEN_Socket_Listen(GWEN_SOCKET *sp, int backlog);
185 
201 int GWEN_Socket_Accept(GWEN_SOCKET *sp,
202  GWEN_INETADDRESS **addr,
203  GWEN_SOCKET **newsock);
204 
214 
220 
221 
230 int GWEN_Socket_GetPeerAddr(GWEN_SOCKET *sp,
231  GWEN_INETADDRESS **addr);
232 
243  GWEN_SOCKETSET *ws,
244  GWEN_SOCKETSET *xs,
245  int timeout);
246 
253 int GWEN_Socket_WaitForRead(GWEN_SOCKET *sp, int timeout);
254 
261 int GWEN_Socket_WaitForWrite(GWEN_SOCKET *sp, int timeout);
271 
282 GWENHYWFAR_API int GWEN_Socket_Read(GWEN_SOCKET *sp,
283  char *buffer,
284  int *bsize);
285 
294 GWENHYWFAR_API int GWEN_Socket_Write(GWEN_SOCKET *sp,
295  const char *buffer,
296  int *bsize);
297 
311 int GWEN_Socket_ReadFrom(GWEN_SOCKET *sp,
312  GWEN_INETADDRESS **addr,
313  char *buffer,
314  int *bsize);
325 int GWEN_Socket_WriteTo(GWEN_SOCKET *sp,
326  const GWEN_INETADDRESS *addr,
327  const char *buffer,
328  int *bsize);
342 GWENHYWFAR_API int GWEN_Socket_SetBlocking(GWEN_SOCKET *sp, int fl);
351 GWENHYWFAR_API int GWEN_Socket_SetBroadcast(GWEN_SOCKET *sp, int fl);
352 
361 GWENHYWFAR_API int GWEN_Socket_GetSocketError(GWEN_SOCKET *sp);
362 
372 int GWEN_Socket_SetReuseAddress(GWEN_SOCKET *sp, int fl);
387 int GWEN_Socket_GetSocketInt(const GWEN_SOCKET *sp);
388 
389 /* end of group socket */
392 /* end of group socketsandsets */
395 #ifdef __cplusplus
396 }
397 #endif
398 
399 #endif /* GWEN_SOCKET_H */
400 
401 
402 
GWENHYWFAR_API void GWEN_SocketSet_free(GWEN_SOCKETSET *ssp)
GWENHYWFAR_API int GWEN_Socket_Write(GWEN_SOCKET *sp, const char *buffer, int *bsize)
GWEN_SOCKETTYPE
Definition: inetsocket.h:81
GWENHYWFAR_API int GWEN_Socket_WriteTo(GWEN_SOCKET *sp, const GWEN_INETADDRESS *addr, const char *buffer, int *bsize)
GWENHYWFAR_API int GWEN_Socket_Accept(GWEN_SOCKET *sp, GWEN_INETADDRESS **addr, GWEN_SOCKET **newsock)
struct GWEN_SOCKETSETSTRUCT GWEN_SOCKETSET
Definition: inetsocket.h:44
GWENHYWFAR_API int GWEN_Socket_WaitForWrite(GWEN_SOCKET *sp, int timeout)
This file contains the internet address handling module.
GWENHYWFAR_API int GWEN_Socket_Open(GWEN_SOCKET *sp)
GWENHYWFAR_API int GWEN_Socket_SetBlocking(GWEN_SOCKET *sp, int fl)
GWENHYWFAR_API int GWEN_Socket_Read(GWEN_SOCKET *sp, char *buffer, int *bsize)
GWENHYWFAR_API int GWEN_Socket_SetReuseAddress(GWEN_SOCKET *sp, int fl)
GWENHYWFAR_API int GWEN_SocketSet_GetSocketCount(GWEN_SOCKETSET *ssp)
GWENHYWFAR_API int GWEN_Socket_GetPeerAddr(GWEN_SOCKET *sp, GWEN_INETADDRESS **addr)
GWENHYWFAR_API int GWEN_Socket_GetSocketInt(const GWEN_SOCKET *sp)
GWENHYWFAR_API int GWEN_SocketSet_Clear(GWEN_SOCKETSET *ssp)
#define GWEN_LIST2_FUNCTION_LIB_DEFS(t, pr, decl)
Definition: list2.h:56
GWENHYWFAR_API GWEN_SOCKET * GWEN_Socket_fromFile(int fd)
GWENHYWFAR_API int GWEN_Socket_Connect(GWEN_SOCKET *sp, const GWEN_INETADDRESS *addr)
GWENHYWFAR_API GWEN_SOCKETTYPE GWEN_Socket_GetSocketType(GWEN_SOCKET *sp)
GWENHYWFAR_API GWEN_SOCKETSET * GWEN_SocketSet_new(void)
GWENHYWFAR_API int GWEN_Socket_Close(GWEN_SOCKET *sp)
struct GWEN_INETADDRESSSTRUCT GWEN_INETADDRESS
Definition: inetaddr.h:97
GWENHYWFAR_API int GWEN_SocketSet_AddSocket(GWEN_SOCKETSET *ssp, const GWEN_SOCKET *sp)
GWENHYWFAR_API int GWEN_Socket_ReadFrom(GWEN_SOCKET *sp, GWEN_INETADDRESS **addr, char *buffer, int *bsize)
#define GWENHYWFAR_API
Definition: gwenhywfarapi.h:67
GWENHYWFAR_API int GWEN_SocketSet_RemoveSocket(GWEN_SOCKETSET *ssp, const GWEN_SOCKET *sp)
#define GWEN_LIST_FUNCTION_LIB_DEFS(t, pr, decl)
Definition: list1.h:349
This file contains some macros concerning lists.
GWENHYWFAR_API GWEN_SOCKET * GWEN_Socket_new(GWEN_SOCKETTYPE socketType)
GWENHYWFAR_API int GWEN_Socket_Select(GWEN_SOCKETSET *rs, GWEN_SOCKETSET *ws, GWEN_SOCKETSET *xs, int timeout)
GWENHYWFAR_API int GWEN_Socket_GetSocketError(GWEN_SOCKET *sp)
GWENHYWFAR_API int GWEN_Socket_SetBroadcast(GWEN_SOCKET *sp, int fl)
GWENHYWFAR_API int GWEN_Socket_Bind(GWEN_SOCKET *sp, const GWEN_INETADDRESS *addr)
struct GWEN_SOCKET GWEN_SOCKET
Definition: inetsocket.h:43
GWENHYWFAR_API int GWEN_Socket_Listen(GWEN_SOCKET *sp, int backlog)
GWENHYWFAR_API int GWEN_SocketSet_HasSocket(GWEN_SOCKETSET *ssp, const GWEN_SOCKET *sp)
GWENHYWFAR_API int GWEN_Socket_WaitForRead(GWEN_SOCKET *sp, int timeout)
GWENHYWFAR_API void GWEN_Socket_free(GWEN_SOCKET *sp)