00001 #ifndef PROTON_IO_H
00002 #define PROTON_IO_H 1
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <proton/import_export.h>
00026 #include <proton/error.h>
00027 #include <sys/types.h>
00028 #include <proton/type_compat.h>
00029
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033
00034 #if defined(_WIN32) && ! defined(__CYGWIN__)
00035 #ifdef _WIN64
00036 typedef unsigned __int64 pn_socket_t;
00037 #else
00038 typedef unsigned int pn_socket_t;
00039 #endif
00040 #define PN_INVALID_SOCKET (pn_socket_t)(~0)
00041 #else
00042 typedef int pn_socket_t;
00043 #define PN_INVALID_SOCKET (-1)
00044 #endif
00045
00046 typedef struct pn_io_t pn_io_t;
00047
00048 PN_EXTERN pn_io_t *pn_io(void);
00049 PN_EXTERN void pn_io_free(pn_io_t *io);
00050 PN_EXTERN pn_error_t *pn_io_error(pn_io_t *io);
00051 PN_EXTERN pn_socket_t pn_connect(pn_io_t *io, const char *host, const char *port);
00052 PN_EXTERN pn_socket_t pn_listen(pn_io_t *io, const char *host, const char *port);
00053 PN_EXTERN pn_socket_t pn_accept(pn_io_t *io, pn_socket_t socket, char *name, size_t size);
00054 PN_EXTERN void pn_close(pn_io_t *io, pn_socket_t socket);
00055 PN_EXTERN ssize_t pn_send(pn_io_t *io, pn_socket_t socket, const void *buf, size_t size);
00056 PN_EXTERN ssize_t pn_recv(pn_io_t *io, pn_socket_t socket, void *buf, size_t size);
00057 PN_EXTERN int pn_pipe(pn_io_t *io, pn_socket_t *dest);
00058 PN_EXTERN ssize_t pn_read(pn_io_t *io, pn_socket_t socket, void *buf, size_t size);
00059 PN_EXTERN ssize_t pn_write(pn_io_t *io, pn_socket_t socket, const void *buf, size_t size);
00060 PN_EXTERN bool pn_wouldblock(pn_io_t *io);
00061
00062 #ifdef __cplusplus
00063 }
00064 #endif
00065
00066 #endif