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 MOD_SOCKET_H
00034
#define MOD_SOCKET_H
00035
00036
#include <windows.h>
00037
#include "chameleon/error.h"
00038
#include "chameleon/inetaddr.h"
00039
00040
#ifdef __cplusplus
00041
extern "C" {
00042
#endif
00043
00044
00052 #define SOCKET_ERROR_TYPE "Socket"
00053 #define SOCKET_ERROR_BAD_SOCKETTYPE (-1)
00054 #define SOCKET_ERROR_NOT_OPEN (-2)
00055 #define SOCKET_ERROR_TIMEOUT (-3)
00056 #define SOCKET_ERROR_IN_PROGRESS (-4)
00057 #define SOCKET_ERROR_STARTUP (-5)
00058 #define SOCKET_ERROR_INTERRUPTED (-6)
00059 #define SOCKET_ERROR_UNSUPPORTED (-7)
00060
00061
00065 CHIPCARD_API typedef enum {
00066
SocketTypeTCP=1,
00067
SocketTypeUDP,
00068
SocketTypeRAW,
00069
SocketTypeUnix
00070 }
SOCKETTYPE;
00071
00072
00073
CHIPCARD_API struct SOCKETSTRUCT {
00074 int socket;
00075 int type;
00076 };
00077
00078 CHIPCARD_API typedef struct SOCKETSTRUCT*
SOCKETPTR;
00079
00080
CHIPCARD_API struct SOCKETSETSTRUCT {
00081 fd_set
set;
00082 int highest;
00083 };
00084
00085 CHIPCARD_API typedef struct SOCKETSETSTRUCT SOCKETSET;
00086 CHIPCARD_API typedef SOCKETSET*
SOCKETSETPTR;
00087
00088
00089
CHIPCARD_API ERRORCODE Socket_ModuleInit();
00090
CHIPCARD_API ERRORCODE Socket_ModuleFini();
00091
00107
CHIPCARD_API ERRORCODE SocketSet_Create(SOCKETSETPTR ssp);
00108
CHIPCARD_API ERRORCODE SocketSet_Destroy(SOCKETSETPTR ssp);
00109
CHIPCARD_API ERRORCODE SocketSet_Clear(SOCKETSETPTR ssp);
00111
00119
CHIPCARD_API ERRORCODE SocketSet_AddSocket(SOCKETSETPTR ssp,
00120
const struct SOCKETSTRUCT *sp);
00121
CHIPCARD_API ERRORCODE SocketSet_RemoveSocket(SOCKETSETPTR ssp,
00122
const struct SOCKETSTRUCT *sp);
00123
CHIPCARD_API int SocketSet_HasSocket(SOCKETSETPTR ssp,
00124
const struct SOCKETSTRUCT *sp);
00126
00128
00129
00141
CHIPCARD_API SOCKETPTR Socket_new();
00142
CHIPCARD_API void Socket_free(SOCKETPTR sp);
00143
CHIPCARD_API ERRORCODE Socket_Open(SOCKETPTR sp, SOCKETTYPE socketType);
00144
CHIPCARD_API ERRORCODE Socket_Close(SOCKETPTR sp);
00146
00153
CHIPCARD_API ERRORCODE Socket_Connect(SOCKETPTR sp,
const INETADDRESS *addr);
00154
CHIPCARD_API ERRORCODE Socket_Bind(SOCKETPTR sp,
const INETADDRESS *addr);
00155
CHIPCARD_API ERRORCODE Socket_Listen(SOCKETPTR sp,
int backlog);
00156
CHIPCARD_API ERRORCODE Socket_Accept(SOCKETPTR sp, INETADDRESSPTR addr, SOCKETPTR newsock);
00158
00166
CHIPCARD_API ERRORCODE Socket_GetPeerAddr(SOCKETPTR sp, INETADDRESSPTR addr);
00167
00168
CHIPCARD_API ERRORCODE Socket_Select( SOCKETSETPTR rs,
00169 SOCKETSETPTR ws,
00170 SOCKETSETPTR xs,
00171
int timeout);
00172
CHIPCARD_API ERRORCODE Socket_WaitForRead(SOCKETPTR sp,
int timeout);
00173
CHIPCARD_API ERRORCODE Socket_WaitForWrite(SOCKETPTR sp,
int timeout);
00175
00183
CHIPCARD_API ERRORCODE Socket_Read(SOCKETPTR sp,
00184
char *buffer,
00185
int *bsize);
00186
CHIPCARD_API ERRORCODE Socket_Write(SOCKETPTR sp,
00187
const char *buffer,
00188
int *bsize);
00189
CHIPCARD_API ERRORCODE Socket_ReadFrom(SOCKETPTR sp,
00190 INETADDRESSPTR addr,
00191
char *buffer,
00192
int *bsize);
00193
CHIPCARD_API ERRORCODE Socket_WriteTo(SOCKETPTR sp,
00194
const INETADDRESS *addr,
00195
const char *buffer,
00196
int *bsize);
00198
00205
CHIPCARD_API ERRORCODE Socket_SetBlocking(SOCKETPTR sp,
00206
int fl);
00207
CHIPCARD_API ERRORCODE Socket_SetBroadcast(SOCKETPTR sp,
00208
int fl);
00209
CHIPCARD_API ERRORCODE Socket_GetSocketError(SOCKETPTR sp);
00210
00211
CHIPCARD_API ERRORCODE Socket_SetReuseAddress(SOCKETPTR sp,
int fl);
00213
00214
00216
00217
00219
00220
#ifdef __cplusplus
00221
}
00222
#endif
00223
00224
#endif // MOD_SOCKET_H
00225
00226
00227