inetsocket.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003                              -------------------
00004     cvs         : $Id: inetsocket.h 978 2006-02-03 17:41:49Z aquamaniac $
00005     begin       : Tue Oct 02 2002
00006     copyright   : (C) 2002 by Martin Preuss
00007     email       : martin@libchipcard.de
00008 
00009  ***************************************************************************
00010  *                                                                         *
00011  *   This library is free software; you can redistribute it and/or         *
00012  *   modify it under the terms of the GNU Lesser General Public            *
00013  *   License as published by the Free Software Foundation; either          *
00014  *   version 2.1 of the License, or (at your option) any later version.    *
00015  *                                                                         *
00016  *   This library is distributed in the hope that it will be useful,       *
00017  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00018  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
00019  *   Lesser General Public License for more details.                       *
00020  *                                                                         *
00021  *   You should have received a copy of the GNU Lesser General Public      *
00022  *   License along with this library; if not, write to the Free Software   *
00023  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston,                 *
00024  *   MA  02111-1307  USA                                                   *
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 
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043 
00044 
00055 #define GWEN_SOCKET_ERROR_TYPE "Socket"
00056 #define GWEN_SOCKET_ERROR_BAD_SOCKETTYPE (-1)
00057 #define GWEN_SOCKET_ERROR_NOT_OPEN       (-2)
00058 #define GWEN_SOCKET_ERROR_TIMEOUT        (-3)
00059 #define GWEN_SOCKET_ERROR_IN_PROGRESS    (-4)
00060 #define GWEN_SOCKET_ERROR_STARTUP        (-5)
00061 #define GWEN_SOCKET_ERROR_INTERRUPTED    (-6)
00062 #define GWEN_SOCKET_ERROR_UNSUPPORTED    (-7)
00063 #define GWEN_SOCKET_ERROR_ABORTED        (-8)
00064 #define GWEN_SOCKET_ERROR_BROKEN_PIPE    (-9)
00065 
00071 typedef enum {
00072   GWEN_SocketTypeTCP=1,
00073   GWEN_SocketTypeUDP,
00074   GWEN_SocketTypeRAW,
00075   GWEN_SocketTypeUnix,
00076   GWEN_SocketTypeFile
00077 } GWEN_SOCKETTYPE;
00078 
00079 
00080 typedef struct GWEN_SOCKETSTRUCT GWEN_SOCKET;
00081 
00082 typedef struct GWEN_SOCKETSETSTRUCT GWEN_SOCKETSET;
00083 
00084 
00102 GWENHYWFAR_API GWEN_SOCKETSET *GWEN_SocketSet_new();
00103 GWENHYWFAR_API void GWEN_SocketSet_free(GWEN_SOCKETSET *ssp);
00104 GWENHYWFAR_API GWEN_ERRORCODE GWEN_SocketSet_Clear(GWEN_SOCKETSET *ssp);
00114 GWENHYWFAR_API
00115   GWEN_ERRORCODE GWEN_SocketSet_AddSocket(GWEN_SOCKETSET *ssp,
00116                                           const GWEN_SOCKET *sp);
00117 GWENHYWFAR_API
00118   GWEN_ERRORCODE GWEN_SocketSet_RemoveSocket(GWEN_SOCKETSET *ssp,
00119                                              const GWEN_SOCKET *sp);
00120 GWENHYWFAR_API int GWEN_SocketSet_HasSocket(GWEN_SOCKETSET *ssp,
00121                                             const GWEN_SOCKET *sp);
00122 GWENHYWFAR_API int GWEN_SocketSet_GetSocketCount(GWEN_SOCKETSET *ssp);
00123 
00125 /*end of group socketset */
00140 
00144 GWENHYWFAR_API GWEN_SOCKET *GWEN_Socket_new(GWEN_SOCKETTYPE socketType);
00145 
00146 GWENHYWFAR_API GWEN_SOCKET *GWEN_Socket_fromFile(int fd);
00147 
00151 GWENHYWFAR_API void GWEN_Socket_free(GWEN_SOCKET *sp);
00152 
00157 GWENHYWFAR_API GWEN_ERRORCODE GWEN_Socket_Open(GWEN_SOCKET *sp);
00158 
00162 GWENHYWFAR_API GWEN_ERRORCODE GWEN_Socket_Close(GWEN_SOCKET *sp);
00171 GWENHYWFAR_API
00172   GWEN_ERRORCODE GWEN_Socket_Connect(GWEN_SOCKET *sp,
00173                                      const GWEN_INETADDRESS *addr);
00174 
00185 GWENHYWFAR_API
00186   GWEN_ERRORCODE GWEN_Socket_Connect_Wait(GWEN_SOCKET *sp,
00187                                           const GWEN_INETADDRESS *addr,
00188                                           int timeout);
00189 
00190 GWENHYWFAR_API
00191   GWEN_ERRORCODE GWEN_Socket_Bind(GWEN_SOCKET *sp,
00192                                   const GWEN_INETADDRESS *addr);
00193 GWENHYWFAR_API
00194   GWEN_ERRORCODE GWEN_Socket_Listen(GWEN_SOCKET *sp, int backlog);
00195 
00210 GWENHYWFAR_API
00211   GWEN_ERRORCODE GWEN_Socket_Accept(GWEN_SOCKET *sp,
00212                                     GWEN_INETADDRESS **addr,
00213                                     GWEN_SOCKET **newsock);
00214 
00215 GWENHYWFAR_API
00216   GWEN_ERRORCODE GWEN_Socket_Accept_Wait(GWEN_SOCKET *sp,
00217                                          GWEN_INETADDRESS **addr,
00218                                          GWEN_SOCKET **newsock,
00219                                          int timeout);
00229 
00234 GWENHYWFAR_API GWEN_SOCKETTYPE GWEN_Socket_GetSocketType(GWEN_SOCKET *sp);
00235 
00236 
00244 GWENHYWFAR_API
00245   GWEN_ERRORCODE GWEN_Socket_GetPeerAddr(GWEN_SOCKET *sp,
00246                                          GWEN_INETADDRESS **addr);
00247 
00256 GWENHYWFAR_API
00257   GWEN_ERRORCODE GWEN_Socket_Select(GWEN_SOCKETSET *rs,
00258                                     GWEN_SOCKETSET *ws,
00259                                     GWEN_SOCKETSET *xs,
00260                                     int timeout);
00261 
00267 GWENHYWFAR_API
00268   GWEN_ERRORCODE GWEN_Socket_WaitForRead(GWEN_SOCKET *sp, int timeout);
00269 
00275 GWENHYWFAR_API
00276   GWEN_ERRORCODE GWEN_Socket_WaitForWrite(GWEN_SOCKET *sp, int timeout);
00286 
00295 GWENHYWFAR_API GWEN_ERRORCODE GWEN_Socket_Read(GWEN_SOCKET *sp,
00296                                                char *buffer,
00297                                                int *bsize);
00298 
00299 GWENHYWFAR_API GWEN_ERRORCODE GWEN_Socket_Read_Wait(GWEN_SOCKET *sp,
00300                                                     char *buffer,
00301                                                     int *bsize,
00302                                                     int timeout,
00303                                                     int force);
00304 
00313 GWENHYWFAR_API GWEN_ERRORCODE GWEN_Socket_Write(GWEN_SOCKET *sp,
00314                                                 const char *buffer,
00315                                                 int *bsize);
00316 
00317 GWENHYWFAR_API GWEN_ERRORCODE GWEN_Socket_Write_Wait(GWEN_SOCKET *sp,
00318                                                      const char *buffer,
00319                                                      int *bsize,
00320                                                      int timeout,
00321                                                      int force);
00322 
00335 GWENHYWFAR_API
00336   GWEN_ERRORCODE GWEN_Socket_ReadFrom(GWEN_SOCKET *sp,
00337                                       GWEN_INETADDRESS **addr,
00338                                       char *buffer,
00339                                       int *bsize);
00349 GWENHYWFAR_API
00350   GWEN_ERRORCODE GWEN_Socket_WriteTo(GWEN_SOCKET *sp,
00351                                      const GWEN_INETADDRESS *addr,
00352                                      const char *buffer,
00353                                      int *bsize);
00367 GWENHYWFAR_API GWEN_ERRORCODE GWEN_Socket_SetBlocking(GWEN_SOCKET *sp,
00368                                                       int fl);
00377 GWENHYWFAR_API GWEN_ERRORCODE GWEN_Socket_SetBroadcast(GWEN_SOCKET *sp,
00378                                                        int fl);
00379 
00388 GWENHYWFAR_API GWEN_ERRORCODE GWEN_Socket_GetSocketError(GWEN_SOCKET *sp);
00389 
00398 GWENHYWFAR_API
00399   GWEN_ERRORCODE GWEN_Socket_SetReuseAddress(GWEN_SOCKET *sp, int fl);
00402 /* end of group socket */
00405 /* end of group socketsandsets */
00408 #ifdef __cplusplus
00409 }
00410 #endif
00411 
00412 #endif /* GWEN_SOCKET_H */
00413 
00414 
00415 

Generated on Sat Sep 16 11:19:15 2006 for gwenhywfar by  doxygen 1.4.7