*/
#define _GNU_SOURCE
+#define _LGPL_SOURCE
#include <assert.h>
#include <common/common.h>
#include <common/utils.h>
+#include "lttng-relayd.h"
#include "index.h"
/*
*
* Return index object or else NULL on error.
*/
-struct relay_index *relay_index_find(uint64_t stream_id,
- uint64_t net_seq_num, struct lttng_ht *ht)
+struct relay_index *relay_index_find(uint64_t stream_id, uint64_t net_seq_num)
{
struct lttng_ht_node_two_u64 *node;
struct lttng_ht_iter iter;
struct lttng_ht_two_u64 key;
struct relay_index *index = NULL;
- assert(ht);
-
DBG3("Finding index for stream id %" PRIu64 " and seq_num %" PRIu64,
stream_id, net_seq_num);
key.key1 = stream_id;
key.key2 = net_seq_num;
- lttng_ht_lookup(ht, (void *)(&key), &iter);
+ lttng_ht_lookup(indexes_ht, (void *)(&key), &iter);
node = lttng_ht_iter_get_node_two_u64(&iter);
if (node == NULL) {
goto end;
*
* RCU read side lock MUST be acquired.
*/
-void relay_index_add(struct relay_index *index, struct lttng_ht *ht,
- struct relay_index **_index)
+void relay_index_add(struct relay_index *index, struct relay_index **_index)
{
struct cds_lfht_node *node_ptr;
assert(index);
- assert(ht);
- assert(_index);
DBG2("Adding relay index with stream id %" PRIu64 " and seqnum %" PRIu64,
- index->key.key1, index->key.key2);
+ index->index_n.key.key1, index->index_n.key.key2);
- node_ptr = cds_lfht_add_unique(ht->ht,
- ht->hash_fct((void *) &index->index_n.key, lttng_ht_seed),
- ht->match_fct, (void *) &index->index_n.key,
+ node_ptr = cds_lfht_add_unique(indexes_ht->ht,
+ indexes_ht->hash_fct((void *) &index->index_n.key, lttng_ht_seed),
+ indexes_ht->match_fct, (void *) &index->index_n.key,
&index->index_n.node);
if (node_ptr != &index->index_n.node) {
*_index = caa_container_of(node_ptr, struct relay_index, index_n.node);
*
* Return 0 on success else a negative value.
*/
-int relay_index_write(int fd, struct relay_index *index, struct lttng_ht *ht)
+int relay_index_write(int fd, struct relay_index *index)
{
int ret;
struct lttng_ht_iter iter;
DBG2("Writing index for stream ID %" PRIu64 " and seq num %" PRIu64
- " on fd %d", index->key.key1, index->key.key2, fd);
+ " on fd %d", index->index_n.key.key1,
+ index->index_n.key.key2, fd);
/* Delete index from hash table. */
iter.iter.node = &index->index_n.node;
- ret = lttng_ht_del(ht, &iter);
+ ret = lttng_ht_del(indexes_ht, &iter);
assert(!ret);
call_rcu(&index->rcu_node, deferred_free_relay_index);
*
* RCU read side lock MUST be acquired.
*/
-void relay_index_delete(struct relay_index *index, struct lttng_ht *ht)
+void relay_index_delete(struct relay_index *index)
{
int ret;
struct lttng_ht_iter iter;
DBG3("Relay index with stream ID %" PRIu64 " and seq num %" PRIu64
- "deleted.", index->key.key1, index->key.key2);
+ " deleted.", index->index_n.key.key1,
+ index->index_n.key.key2);
/* Delete index from hash table. */
iter.iter.node = &index->index_n.node;
- ret = lttng_ht_del(ht, &iter);
+ ret = lttng_ht_del(indexes_ht, &iter);
assert(!ret);
}
/*
* Destroy every relay index with the given stream id as part of the key.
*/
-void relay_index_destroy_by_stream_id(uint64_t stream_id, struct lttng_ht *ht)
+void relay_index_destroy_by_stream_id(uint64_t stream_id)
{
struct lttng_ht_iter iter;
struct relay_index *index;
- assert(ht);
- assert(ht->ht);
-
rcu_read_lock();
- cds_lfht_for_each_entry(ht->ht, &iter.iter, index, index_n.node) {
- if (index->key.key1 == stream_id) {
- relay_index_delete(index, ht);
+ cds_lfht_for_each_entry(indexes_ht->ht, &iter.iter, index, index_n.node) {
+ if (index->index_n.key.key1 == stream_id) {
+ relay_index_delete(index);
relay_index_free_safe(index);
}
}