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
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef _GUAC_SOCKET_H
00039 #define _GUAC_SOCKET_H
00040
00041 #include <stdint.h>
00042 #include <unistd.h>
00043
00050 typedef struct guac_socket guac_socket;
00051
00062 typedef ssize_t guac_socket_read_handler(guac_socket* socket,
00063 void* buf, size_t count);
00064
00075 typedef ssize_t guac_socket_write_handler(guac_socket* socket,
00076 void* buf, size_t count);
00077
00089 typedef int guac_socket_select_handler(guac_socket* socket, int usec_timeout);
00090
00099 typedef int guac_socket_free_handler(guac_socket* socket);
00100
00105 struct guac_socket {
00106
00110 void* data;
00111
00115 guac_socket_read_handler* read_handler;
00116
00122 guac_socket_write_handler* write_handler;
00123
00128 guac_socket_select_handler* select_handler;
00129
00133 guac_socket_free_handler* free_handler;
00134
00138 int __ready;
00139
00144 int __ready_buf[3];
00145
00149 int __written;
00150
00155 char __out_buf[8192];
00156
00160 int __instructionbuf_parse_start;
00161
00165 int __instructionbuf_size;
00166
00170 int __instructionbuf_used_length;
00171
00177 char* __instructionbuf;
00178
00182 int __instructionbuf_elementc;
00183
00188 char* __instructionbuf_elementv[64];
00189
00190 };
00191
00199 guac_socket* guac_socket_alloc();
00200
00206 void guac_socket_free(guac_socket* socket);
00207
00220 guac_socket* guac_socket_open(int fd);
00221
00236 guac_socket* guac_socket_nest(guac_socket* parent, int index);
00237
00250 ssize_t guac_socket_write_int(guac_socket* socket, int64_t i);
00251
00266 ssize_t guac_socket_write_string(guac_socket* socket, const char* str);
00267
00284 ssize_t guac_socket_write_base64(guac_socket* socket, const void* buf, size_t count);
00285
00298 ssize_t guac_socket_write(guac_socket* socket, const void* buf, size_t count);
00299
00313 ssize_t guac_socket_read(guac_socket* socket, void* buf, size_t count);
00314
00324 ssize_t guac_socket_flush_base64(guac_socket* socket);
00325
00335 ssize_t guac_socket_flush(guac_socket* socket);
00336
00337
00354 int guac_socket_select(guac_socket* socket, int usec_timeout);
00355
00356 #endif
00357