as_status aerospike_query_users(aerospike* as, as_error* err, const as_policy_admin* policy, as_user*** users, int* users_size) { as_error_reset(err); uint8_t buffer[AS_STACK_BUF_SIZE]; uint8_t* p = buffer + 8; p = as_admin_write_header(p, QUERY_USERS, 0); as_vector list; as_vector_init(&list, sizeof(as_user*), 100); as_status status = as_admin_read_list(as, err, policy, buffer, p, as_parse_users, &list); if (status == AEROSPIKE_OK) { // Transfer array to output argument. Do not destroy vector. *users_size = list.size; *users = list.list; } else { *users_size = 0; *users = 0; as_free_users(&list, 0); } return status; }
as_node* as_node_create(as_cluster* cluster, const char* name, struct sockaddr_in* addr) { as_node* node = cf_malloc(sizeof(as_node)); if (!node) { return 0; } node->ref_count = 1; node->partition_generation = 0xFFFFFFFF; node->cluster = cluster; strcpy(node->name, name); node->address_index = 0; as_vector_init(&node->addresses, sizeof(as_address), 2); as_node_add_address(node, addr); node->conn_q = cf_queue_create(sizeof(int), true); // node->conn_q_asyncfd = cf_queue_create(sizeof(int), true); // node->asyncwork_q = cf_queue_create(sizeof(cl_async_work*), true); node->info_fd = -1; node->friends = 0; node->failures = 0; node->index = 0; node->active = true; return node; }
as_vector* as_vector_create(uint32_t item_size, uint32_t capacity) { as_vector* vector = cf_malloc(sizeof(as_vector)); as_vector_init(vector, item_size, capacity); vector->flags = FLAGS_HEAP | FLAGS_CREATED; return vector; }
int aerospike_query_users(aerospike* as, const as_policy_admin* policy, as_user_roles*** user_roles, int* user_roles_size) { uint8_t buffer[STACK_BUF_SZ]; uint8_t* p = buffer + 8; p = write_header(p, QUERY_USERS, 0); as_vector users; as_vector_init(&users, sizeof(as_user_roles*), 100); int status = as_read_users(as, policy, buffer, p, &users); if (status == 0) { // Transfer array to output argument. Do not destroy vector. *user_roles_size = users.size; *user_roles = users.list; } else { *user_roles_size = 0; *user_roles = 0; as_free_users(&users, 0); } return status; }