25 #include <citrusleaf/cf_ll.h>
31 #if defined(AS_USE_LIBEV)
33 #elif defined(AS_USE_LIBUV)
35 #elif defined(AS_USE_LIBEVENT)
36 #include <event2/event.h>
48 #define AS_ASYNC_STATE_UNREGISTERED 0
49 #define AS_ASYNC_STATE_TLS_CONNECT 1
50 #define AS_ASYNC_STATE_AUTH_WRITE 2
51 #define AS_ASYNC_STATE_AUTH_READ_HEADER 4
52 #define AS_ASYNC_STATE_AUTH_READ_BODY 8
53 #define AS_ASYNC_STATE_WRITE 16
54 #define AS_ASYNC_STATE_READ_HEADER 32
55 #define AS_ASYNC_STATE_READ_BODY 64
57 #define AS_ASYNC_FLAGS_FREE_BUF 1
58 #define AS_ASYNC_FLAGS_EVENT_RECEIVED 2
60 #define AS_ASYNC_AUTH_RETURN_CODE 1
62 #define AS_EVENT_CONNECTION_COMPLETE 0
63 #define AS_EVENT_CONNECTION_PENDING 1
64 #define AS_EVENT_CONNECTION_ERROR 2
66 #define AS_EVENT_QUEUE_INITIAL_CAPACITY 256
72 #if defined(AS_USE_LIBEV)
76 #elif defined(AS_USE_LIBUV)
83 #elif defined(AS_USE_LIBEVENT)
108 #if defined(AS_USE_LIBEV)
109 struct ev_timer timer;
110 #elif defined(AS_USE_LIBUV)
112 #elif defined(AS_USE_LIBEVENT)
156 typedef enum as_connection_status_e {
232 #if defined(AS_USE_LIBEV)
244 if (max_socket_idle == 0 && conn->socket.ctx) {
245 max_socket_idle = 55;
248 if (max_socket_idle > 0) {
249 conn->socket.idle_check.max_socket_idle = max_socket_idle;
250 conn->socket.idle_check.last_used = (uint32_t)cf_get_seconds();
253 conn->socket.idle_check.max_socket_idle = conn->socket.idle_check.last_used = 0;
281 #elif defined(AS_USE_LIBUV)
289 if (uv_fileno((uv_handle_t*)&conn->socket, &fd) == 0) {
313 as_uv_timer_closed(uv_handle_t* handle);
320 uv_close((uv_handle_t*)&cmd->timer, as_uv_timer_closed);
331 #elif defined(AS_USE_LIBEVENT)
343 if (max_socket_idle == 0 && conn->socket.ctx) {
344 max_socket_idle = 55;
347 if (max_socket_idle > 0) {
348 conn->socket.idle_check.max_socket_idle = max_socket_idle;
349 conn->socket.idle_check.last_used = (uint32_t)cf_get_seconds();
352 conn->socket.idle_check.max_socket_idle = conn->socket.idle_check.last_used = 0;
360 evtimer_del(&cmd->timer);
367 event_del(&conn->watcher);
448 cmd->
auth_len = (uint32_t)proto->sz;