00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __nanohttp_socket_h
00025 #define __nanohttp_socket_h
00026
00040 #define HSOCKET_ERROR 1000
00041 #define HSOCKET_ERROR_CREATE (HSOCKET_ERROR + 1)
00042 #define HSOCKET_ERROR_GET_HOSTNAME (HSOCKET_ERROR + 2)
00043 #define HSOCKET_ERROR_CONNECT (HSOCKET_ERROR + 3)
00044 #define HSOCKET_ERROR_SEND (HSOCKET_ERROR + 4)
00045 #define HSOCKET_ERROR_RECEIVE (HSOCKET_ERROR + 5)
00046 #define HSOCKET_ERROR_BIND (HSOCKET_ERROR + 6)
00047 #define HSOCKET_ERROR_LISTEN (HSOCKET_ERROR + 7)
00048 #define HSOCKET_ERROR_ACCEPT (HSOCKET_ERROR + 8)
00049 #define HSOCKET_ERROR_NOT_INITIALIZED (HSOCKET_ERROR + 9)
00050 #define HSOCKET_ERROR_IOCTL (HSOCKET_ERROR + 10)
00051
00055 struct hsocket_t
00056 {
00057 #ifdef WIN32
00058 SOCKET sock;
00059 #else
00060 int sock;
00061 #endif
00062 struct sockaddr_in addr;
00063 size_t bytes_transmitted;
00064 size_t bytes_received;
00065 void *ssl;
00066 };
00067
00068 #ifdef __cplusplus
00069 extern "C"
00070 {
00071 #endif
00072
00080 extern herror_t hsocket_module_init(int argc, char **argv);
00081
00087 extern void hsocket_module_destroy(void);
00088
00099 extern herror_t hsocket_init(struct hsocket_t * sock);
00100
00105 extern void hsocket_free(struct hsocket_t * sock);
00106
00121 extern herror_t hsocket_open(struct hsocket_t *sock, const char *host, int port, int ssl);
00122
00127 extern void hsocket_close(struct hsocket_t *sock);
00128
00141 extern herror_t hsocket_bind(struct hsocket_t *sock, unsigned short port);
00142
00153 extern herror_t hsocket_listen(struct hsocket_t *sock);
00154
00165 extern herror_t hsocket_accept(struct hsocket_t *sock, struct hsocket_t *dest);
00166
00177 extern herror_t hsocket_send(struct hsocket_t *sock, const unsigned char *bytes, int size);
00178
00188 extern herror_t hsocket_send_string(struct hsocket_t *sock, const char *str);
00189
00190 extern int hsocket_select_recv(int sock, char *buf, size_t len);
00191
00204 extern herror_t hsocket_recv(struct hsocket_t * sock, unsigned char *buffer, int size, int force, int *len);
00205
00212 extern int hsocket_get_timeout(void);
00213
00220 extern void hsocket_set_timeout(int secs);
00221
00222 #ifdef __cplusplus
00223 }
00224 #endif
00225
00228 #endif