Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

posix/inetsocket.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile: inetsocket.h,v $
00003                              -------------------
00004     cvs         : $Id: inetsocket.h,v 1.6 2003/04/21 23:33:33 aquamaniac Exp $
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 MOD_SOCKET_H
00034 #define MOD_SOCKET_H
00035 
00036 #include "chameleon/error.h"
00037 #include "chameleon/inetaddr.h"
00038 #include <sys/types.h>
00039 #include <sys/socket.h>
00040 #include <netinet/in.h>
00041 #ifdef HAVE_ARPA_INET_H
00042 # include <arpa/inet.h>
00043 #endif
00044 
00045 
00046 #ifdef __cplusplus
00047 extern "C" {
00048 #endif
00049 
00050 
00058 #define SOCKET_ERROR_TYPE "Socket"
00059 #define SOCKET_ERROR_BAD_SOCKETTYPE (-1)
00060 #define SOCKET_ERROR_NOT_OPEN       (-2)
00061 #define SOCKET_ERROR_TIMEOUT        (-3)
00062 #define SOCKET_ERROR_IN_PROGRESS    (-4)
00063 #define SOCKET_ERROR_STARTUP        (-5)
00064 #define SOCKET_ERROR_INTERRUPTED    (-6)
00065 #define SOCKET_ERROR_UNSUPPORTED    (-7)
00066 
00067 
00071 CHIPCARD_API typedef enum {
00072   SocketTypeTCP=1,
00073   SocketTypeUDP,
00074   SocketTypeRAW,
00075   SocketTypeUnix
00076 } SOCKETTYPE;
00077 
00078 
00079 CHIPCARD_API struct SOCKETSTRUCT {
00080   int socket;
00081   int type;
00082 };
00083 
00084 CHIPCARD_API typedef struct SOCKETSTRUCT* SOCKETPTR;
00085 
00086 CHIPCARD_API struct SOCKETSETSTRUCT {
00087   fd_set set;
00088   int highest;
00089 };
00090 
00091 CHIPCARD_API typedef struct SOCKETSETSTRUCT SOCKETSET;
00092 CHIPCARD_API typedef SOCKETSET* SOCKETSETPTR;
00093 
00094 
00098 CHIPCARD_API ERRORCODE Socket_ModuleInit();
00099 
00103 CHIPCARD_API ERRORCODE Socket_ModuleFini();
00104 
00122 CHIPCARD_API ERRORCODE SocketSet_Create(SOCKETSETPTR ssp);
00123 CHIPCARD_API ERRORCODE SocketSet_Destroy(SOCKETSETPTR ssp);
00124 CHIPCARD_API ERRORCODE SocketSet_Clear(SOCKETSETPTR ssp);
00126 
00134 CHIPCARD_API ERRORCODE SocketSet_AddSocket(SOCKETSETPTR ssp,
00135                                            const struct SOCKETSTRUCT *sp);
00136 CHIPCARD_API ERRORCODE SocketSet_RemoveSocket(SOCKETSETPTR ssp,
00137                                               const struct SOCKETSTRUCT *sp);
00138 CHIPCARD_API int SocketSet_HasSocket(SOCKETSETPTR ssp,
00139                                      const struct SOCKETSTRUCT *sp);
00141 //end of group socketset
00143 
00144 
00156 
00160 CHIPCARD_API SOCKETPTR Socket_new();
00161 
00165 CHIPCARD_API void Socket_free(SOCKETPTR sp);
00166 
00171 CHIPCARD_API ERRORCODE Socket_Open(SOCKETPTR sp, SOCKETTYPE socketType);
00172 
00176 CHIPCARD_API ERRORCODE Socket_Close(SOCKETPTR sp);
00178 
00185 CHIPCARD_API ERRORCODE Socket_Connect(SOCKETPTR sp, const INETADDRESS *addr);
00186 CHIPCARD_API ERRORCODE Socket_Bind(SOCKETPTR sp, const INETADDRESS *addr);
00187 CHIPCARD_API ERRORCODE Socket_Listen(SOCKETPTR sp, int backlog);
00188 CHIPCARD_API ERRORCODE Socket_Accept(SOCKETPTR sp, INETADDRESSPTR addr, SOCKETPTR newsock);
00190 
00198 
00199 CHIPCARD_API SOCKETTYPE Socket_GetSocketType(SOCKETPTR sp);
00200 
00201 CHIPCARD_API ERRORCODE Socket_GetPeerAddr(SOCKETPTR sp, INETADDRESSPTR addr);
00202 
00211 CHIPCARD_API ERRORCODE Socket_Select(SOCKETSETPTR rs,
00212                                      SOCKETSETPTR ws,
00213                                      SOCKETSETPTR xs,
00214                                      int timeout);
00215 
00220 CHIPCARD_API ERRORCODE Socket_WaitForRead(SOCKETPTR sp,int timeout);
00221 
00226 CHIPCARD_API ERRORCODE Socket_WaitForWrite(SOCKETPTR sp,int timeout);
00228 
00236 
00244 CHIPCARD_API ERRORCODE Socket_Read(SOCKETPTR sp,
00245                                    char *buffer,
00246                                    int *bsize);
00247 
00255 CHIPCARD_API ERRORCODE Socket_Write(SOCKETPTR sp,
00256                                     const char *buffer,
00257                                     int *bsize);
00258 
00268 CHIPCARD_API ERRORCODE Socket_ReadFrom(SOCKETPTR sp,
00269                                        INETADDRESSPTR addr,
00270                                        char *buffer,
00271                                        int *bsize);
00280 CHIPCARD_API ERRORCODE Socket_WriteTo(SOCKETPTR sp,
00281                                       const INETADDRESS *addr,
00282                                       const char *buffer,
00283                                       int *bsize);
00285 
00292 CHIPCARD_API ERRORCODE Socket_SetBlocking(SOCKETPTR sp,
00293                                           int fl);
00294 CHIPCARD_API ERRORCODE Socket_SetBroadcast(SOCKETPTR sp,
00295                                            int fl);
00296 CHIPCARD_API ERRORCODE Socket_GetSocketError(SOCKETPTR sp);
00297 
00298 CHIPCARD_API ERRORCODE Socket_SetReuseAddress(SOCKETPTR sp, int fl);
00300 
00301 // end of group socket
00303 
00304 // end of group socketsandsets
00306 
00307 #ifdef __cplusplus
00308 }
00309 #endif
00310 
00311 #endif // MOD_SOCKET_H
00312 
00313 
00314 

Generated on Fri Dec 3 23:10:24 2004 for libchipcard by  doxygen 1.3.9.1