1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| bool as_operations_add_map_put_items( as_operations* ops, const char* name, as_map_policy* policy, as_map* items ) { return as_operations_map_put_items(ops, name, NULL, policy, items); } bool as_operations_map_put_items( as_operations* ops, const char* name, as_cdt_ctx* ctx, as_map_policy* policy, as_map* items ) { as_packer pk = as_cdt_begin(); as_cdt_pack_header(&pk, ctx, policy->items_command, 2); as_pack_val(&pk, (as_val*)items); as_pack_uint64(&pk, policy->attributes);
as_cdt_end(&pk); as_map_destroy(items); return as_cdt_add_packed(&pk, ops, name, AS_OPERATOR_MAP_MODIFY); }
as_status aerospike_key_operate( aerospike* as, as_error* err, const as_policy_operate* policy, const as_key* key, const as_operations* ops, as_record** rec ) { uint32_t n_operations = ops->binops.size; as_queue buffers; as_queue_inita(&buffers, sizeof(as_buffer), n_operations);
as_policy_operate policy_local; as_operate oper;
as_status status = as_operate_init(&oper, as, policy, &policy_local, key, ops, &buffers, err);
policy = oper.policy;
as_partition_info pi; status = as_command_prepare(as->cluster, err, &policy->base, key, &pi);
as_operate_size(&oper);
as_command_parse_result_data data; data.record = rec; data.deserialize = policy->deserialize;
as_command cmd;
if (oper.write_attr & AS_MSG_INFO2_WRITE) { as_command_init_write(&cmd, as->cluster, &policy->base, policy->replica, key, oper.size, &pi, as_command_parse_result, &data); } ... status = as_command_send(&cmd, err, compression_threshold, as_operate_write, &oper);
return status; }
|