gwenhywfar 5.10.2
inetsocket.h
Go to the documentation of this file.
1/***************************************************************************
2 begin : Tue Oct 02 2002
3 copyright : (C) 2002 by Martin Preuss
4 email : martin@libchipcard.de
5
6 ***************************************************************************
7 * *
8 * This library is free software; you can redistribute it and/or *
9 * modify it under the terms of the GNU Lesser General Public *
10 * License as published by the Free Software Foundation; either *
11 * version 2.1 of the License, or (at your option) any later version. *
12 * *
13 * This library is distributed in the hope that it will be useful, *
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
16 * Lesser General Public License for more details. *
17 * *
18 * You should have received a copy of the GNU Lesser General Public *
19 * License along with this library; if not, write to the Free Software *
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
21 * MA 02111-1307 USA *
22 * *
23 ***************************************************************************/
24
30#ifndef GWEN_SOCKET_H
31#define GWEN_SOCKET_H
32
34#include <gwenhywfar/error.h>
35#include <gwenhywfar/inetaddr.h>
36#include <gwenhywfar/list1.h>
37#include <gwenhywfar/list2.h>
38
39
40typedef struct GWEN_SOCKET GWEN_SOCKET;
41typedef struct GWEN_SOCKETSETSTRUCT GWEN_SOCKETSET;
42
45
46
47#ifdef __cplusplus
48extern "C" {
49#endif
50
51
62/*@TODO: remove this */
63#define GWEN_SOCKET_ERROR_TYPE "Socket"
64#define GWEN_SOCKET_ERROR_BAD_SOCKETTYPE (-1)
65#define GWEN_SOCKET_ERROR_NOT_OPEN (-2)
66#define GWEN_SOCKET_ERROR_TIMEOUT (-3)
67#define GWEN_SOCKET_ERROR_IN_PROGRESS (-4)
68#define GWEN_SOCKET_ERROR_STARTUP (-5)
69#define GWEN_SOCKET_ERROR_INTERRUPTED (-6)
70#define GWEN_SOCKET_ERROR_UNSUPPORTED (-7)
71#define GWEN_SOCKET_ERROR_ABORTED (-8)
72#define GWEN_SOCKET_ERROR_BROKEN_PIPE (-9)
79typedef enum {
87
88
89
121 const GWEN_SOCKET *sp);
124 const GWEN_SOCKET *sp);
126 const GWEN_SOCKET *sp);
128
130/*end of group socketset */
145
150
152
157
163
178
181
183
200 GWEN_INETADDRESS **addr,
201 GWEN_SOCKET **newsock);
202
212
218
219
229 GWEN_INETADDRESS **addr);
230
241 GWEN_SOCKETSET *ws,
242 GWEN_SOCKETSET *xs,
243 int timeout);
244
252
269
281 char *buffer,
282 int *bsize);
283
293 const char *buffer,
294 int *bsize);
295
310 GWEN_INETADDRESS **addr,
311 char *buffer,
312 int *bsize);
324 const GWEN_INETADDRESS *addr,
325 const char *buffer,
326 int *bsize);
350
360
386
387/* end of group socket */
390/* end of group socketsandsets */
393#ifdef __cplusplus
394}
395#endif
396
397#endif /* GWEN_SOCKET_H */
398
399
400
GWEN_SOCKETTYPE
Definition: inetsocket.h:79
@ GWEN_SocketTypeUDP
Definition: inetsocket.h:81
@ GWEN_SocketTypeRAW
Definition: inetsocket.h:82
@ GWEN_SocketTypeTCP
Definition: inetsocket.h:80
@ GWEN_SocketTypeUnix
Definition: inetsocket.h:83
@ GWEN_SocketTypeFile
Definition: inetsocket.h:84
GWENHYWFAR_API void GWEN_Socket_free(GWEN_SOCKET *sp)
GWENHYWFAR_API int GWEN_SocketSet_GetSocketCount(GWEN_SOCKETSET *ssp)
GWENHYWFAR_API int GWEN_Socket_Close(GWEN_SOCKET *sp)
GWENHYWFAR_API int GWEN_Socket_Open(GWEN_SOCKET *sp)
GWENHYWFAR_API GWEN_SOCKET * GWEN_Socket_fromFile(int fd)
GWENHYWFAR_API GWEN_SOCKET * GWEN_Socket_new(GWEN_SOCKETTYPE socketType)
GWENHYWFAR_API int GWEN_SocketSet_HasSocket(GWEN_SOCKETSET *ssp, const GWEN_SOCKET *sp)
GWENHYWFAR_API int GWEN_SocketSet_RemoveSocket(GWEN_SOCKETSET *ssp, const GWEN_SOCKET *sp)
GWENHYWFAR_API void GWEN_SocketSet_free(GWEN_SOCKETSET *ssp)
GWENHYWFAR_API int GWEN_SocketSet_Clear(GWEN_SOCKETSET *ssp)
GWENHYWFAR_API int GWEN_SocketSet_AddSocket(GWEN_SOCKETSET *ssp, const GWEN_SOCKET *sp)
GWENHYWFAR_API GWEN_SOCKETSET * GWEN_SocketSet_new(void)
GWENHYWFAR_API int GWEN_Socket_Read(GWEN_SOCKET *sp, char *buffer, int *bsize)
GWENHYWFAR_API int GWEN_Socket_GetPeerAddr(GWEN_SOCKET *sp, GWEN_INETADDRESS **addr)
GWENHYWFAR_API int GWEN_Socket_Accept(GWEN_SOCKET *sp, GWEN_INETADDRESS **addr, GWEN_SOCKET **newsock)
GWENHYWFAR_API int GWEN_Socket_Bind(GWEN_SOCKET *sp, const GWEN_INETADDRESS *addr)
GWENHYWFAR_API int GWEN_Socket_SetBlocking(GWEN_SOCKET *sp, int fl)
GWENHYWFAR_API int GWEN_Socket_SetBroadcast(GWEN_SOCKET *sp, int fl)
GWENHYWFAR_API GWEN_SOCKETTYPE GWEN_Socket_GetSocketType(GWEN_SOCKET *sp)
GWENHYWFAR_API int GWEN_Socket_GetSocketInt(const GWEN_SOCKET *sp)
GWENHYWFAR_API int GWEN_Socket_SetReuseAddress(GWEN_SOCKET *sp, int fl)
GWENHYWFAR_API int GWEN_Socket_Listen(GWEN_SOCKET *sp, int backlog)
GWENHYWFAR_API int GWEN_Socket_Connect(GWEN_SOCKET *sp, const GWEN_INETADDRESS *addr)
GWENHYWFAR_API int GWEN_Socket_WriteTo(GWEN_SOCKET *sp, const GWEN_INETADDRESS *addr, const char *buffer, int *bsize)
GWENHYWFAR_API int GWEN_Socket_WaitForRead(GWEN_SOCKET *sp, int timeout)
GWENHYWFAR_API int GWEN_Socket_ReadFrom(GWEN_SOCKET *sp, GWEN_INETADDRESS **addr, char *buffer, int *bsize)
GWENHYWFAR_API int GWEN_Socket_WaitForWrite(GWEN_SOCKET *sp, int timeout)
GWENHYWFAR_API int GWEN_Socket_GetSocketError(GWEN_SOCKET *sp)
GWENHYWFAR_API int GWEN_Socket_Select(GWEN_SOCKETSET *rs, GWEN_SOCKETSET *ws, GWEN_SOCKETSET *xs, int timeout)
GWENHYWFAR_API int GWEN_Socket_Write(GWEN_SOCKET *sp, const char *buffer, int *bsize)
#define GWENHYWFAR_API
Definition: gwenhywfarapi.h:67
This file contains the internet address handling module.
struct GWEN_INETADDRESSSTRUCT GWEN_INETADDRESS
Definition: inetaddr.h:95
struct GWEN_SOCKETSETSTRUCT GWEN_SOCKETSET
Definition: inetsocket.h:41
struct GWEN_SOCKET GWEN_SOCKET
Definition: inetsocket.h:40
#define GWEN_LIST_FUNCTION_LIB_DEFS(t, pr, decl)
Definition: list1.h:348
This file contains some macros concerning lists.
#define GWEN_LIST2_FUNCTION_LIB_DEFS(t, pr, decl)
Definition: list2.h:56