24 #include <netinet/in.h>
32 #include <aerospike/ck/ck_pr.h>
41 #define AS_HOSTNAME_SIZE 256
46 #define AS_NODE_NAME_SIZE 20
49 #define AS_NODE_NAME_MAX_SIZE AS_NODE_NAME_SIZE
51 #define AS_FEATURES_GEO (1 << 0)
52 #define AS_FEATURES_DOUBLE (1 << 1)
53 #define AS_FEATURES_BATCH_INDEX (1 << 2)
54 #define AS_FEATURES_REPLICAS_ALL (1 << 3)
55 #define AS_FEATURES_PIPELINING (1 << 4)
56 #define AS_FEATURES_PEERS (1 << 5)
57 #define AS_FEATURES_REPLICAS (1 << 6)
59 #define AS_ADDRESS4_MAX 4
60 #define AS_ADDRESS6_MAX 8
69 typedef struct as_address_s {
73 struct sockaddr_storage addr;
86 typedef struct as_alias_s {
105 typedef struct as_conn_pool_s {
131 typedef struct as_conn_pool_lock_s {
151 typedef struct as_node_s {
292 typedef struct as_node_info_s {
396 struct as_cluster_s* cluster,
const char* hostname,
const char* tls_name,
397 in_port_t port,
bool is_alias,
struct sockaddr* addr,
as_node_info* node_info
415 ck_pr_store_8(&node->
active,
false);
439 ck_pr_dec_32_zero(&node->
ref_count, &destroy);
472 static inline const char*
500 pthread_mutex_lock(&pool_lock->
lock);
502 pthread_mutex_unlock(&pool_lock->
lock);
516 if (max_socket_idle == 0 && sock->
ctx) {
517 max_socket_idle = 55;
520 if (max_socket_idle > 0) {
521 sock->
idle_check.max_socket_idle = max_socket_idle;
522 sock->
idle_check.last_used = (uint32_t)cf_get_seconds();
529 pthread_mutex_lock(&pool_lock->
lock);
531 pthread_mutex_unlock(&pool_lock->
lock);
535 pthread_mutex_lock(&pool_lock->
lock);
537 pthread_mutex_unlock(&pool_lock->
lock);
static void as_node_deactivate(as_node *node)
void as_queue_destroy(as_queue *queue)
void as_node_add_alias(as_node *node, const char *hostname, in_port_t port)
#define AS_IP_ADDRESS_SIZE
struct as_conn_pool_lock_s * pool_lock
char name[AS_IP_ADDRESS_SIZE]
as_status as_node_authenticate_connection(struct as_cluster_s *cluster, const char *user, const char *password, uint64_t deadline_ms)
void as_node_destroy(as_node *node)
struct as_cluster_s * cluster
bool as_queue_pop(as_queue *queue, void *ptr)
static bool as_host_equals(as_host *h1, as_host *h2)
uint32_t peers_generation
#define AS_NODE_NAME_SIZE
static bool as_conn_pool_inc(as_conn_pool *pool)
as_conn_pool * pipe_conn_pools
void as_node_add_address(as_node *node, struct sockaddr *addr)
static bool as_conn_pool_put(as_conn_pool *pool, void *conn)
static void as_conn_pool_destroy(as_conn_pool *pool)
bool as_queue_push(as_queue *queue, const void *ptr)
uint32_t partition_generation
static void as_conn_pool_dec(as_conn_pool *pool)
as_conn_pool * async_conn_pools
as_conn_pool_lock * conn_pool_locks
as_node * as_node_create(struct as_cluster_s *cluster, const char *hostname, const char *tls_name, in_port_t port, bool is_alias, struct sockaddr *addr, as_node_info *node_info)
static void as_conn_pool_init(as_conn_pool *pool, uint32_t size, uint32_t limit)
static void as_node_release(as_node *node)
static const char * as_node_get_address_string(as_node *node)
bool as_queue_init(as_queue *queue, uint32_t item_size, uint32_t capacity)
void as_socket_close(as_socket *sock)
static void as_node_put_connection(as_socket *sock, uint32_t max_socket_idle)
static bool as_conn_pool_get(as_conn_pool *pool, void *conn)
struct as_socket::@2::@4 idle_check
as_status as_node_get_connection(as_error *err, as_node *node, uint32_t socket_timeout, uint64_t deadline_ms, as_socket *sock)
static void as_node_close_connection(as_socket *sock)
static void as_node_reserve(as_node *node)
static as_address * as_node_get_address(as_node *node)