static void * background_mongoc_client_kill_cursor (void *data) { future_t *future = (future_t *) data; future_value_t return_value; return_value.type = future_value_void_type; mongoc_client_kill_cursor ( future_value_get_mongoc_client_ptr (future_get_param (future, 0)), future_value_get_int64_t (future_get_param (future, 1))); future_resolve (future, return_value); return NULL; }
void _mongoc_cursor_destroy (mongoc_cursor_t *cursor) { ENTRY; bson_return_if_fail(cursor); if (cursor->in_exhaust) { cursor->client->in_exhaust = false; if (!cursor->done) { _mongoc_cluster_disconnect_node ( &cursor->client->cluster, &cursor->client->cluster.nodes[cursor->hint - 1]); } } else if (cursor->rpc.reply.cursor_id) { mongoc_client_kill_cursor(cursor->client, cursor->rpc.reply.cursor_id); } if (cursor->reader) { bson_reader_destroy(cursor->reader); cursor->reader = NULL; } bson_destroy(&cursor->query); bson_destroy(&cursor->fields); _mongoc_buffer_destroy(&cursor->buffer); mongoc_read_prefs_destroy(cursor->read_prefs); bson_free(cursor); mongoc_counter_cursors_active_dec(); mongoc_counter_cursors_disposed_inc(); EXIT; }