Use compiler-agnostic defines to silence warning
[lttng-tools.git] / src / bin / lttng-relayd / session.cpp
index 8ac4a510dc263f552e2b584256b328986c0e8aad..e05482f15622995673aa71aabe3abc92a0b0d779 100644 (file)
@@ -455,9 +455,9 @@ struct relay_session *session_get_by_id(uint64_t id)
        struct lttng_ht_node_u64 *node;
        struct lttng_ht_iter iter;
 
-       lttng::urcu::read_lock_guard read_lock;
+       const lttng::urcu::read_lock_guard read_lock;
        lttng_ht_lookup(sessions_ht, &id, &iter);
-       node = lttng_ht_iter_get_node_u64(&iter);
+       node = lttng_ht_iter_get_node<lttng_ht_node_u64>(&iter);
        if (!node) {
                DBG("Session find by ID %" PRIu64 " id NOT found", id);
                goto end;
@@ -480,8 +480,6 @@ end:
 bool session_has_ongoing_rotation(const struct relay_session *session)
 {
        bool ongoing_rotation = false;
-       struct lttng_ht_iter iter;
-       struct relay_session *iterated_session;
 
        ASSERT_LOCKED(session->lock);
 
@@ -502,54 +500,52 @@ bool session_has_ongoing_rotation(const struct relay_session *session)
         * Sample the 'ongoing_rotation' status of all relay sessions that
         * originate from the same session daemon session.
         */
-       {
-               lttng::urcu::read_lock_guard read_lock;
-
-               cds_lfht_for_each_entry (
-                       sessions_ht->ht, &iter.iter, iterated_session, session_n.node) {
-                       if (!session_get(iterated_session)) {
-                               continue;
-                       }
-
-                       if (session == iterated_session) {
-                               /* Skip this session. */
-                               goto next_session_no_unlock;
-                       }
-
-                       pthread_mutex_lock(&iterated_session->lock);
-
-                       if (!iterated_session->id_sessiond.is_set) {
-                               /*
-                                * Session belongs to a peer that doesn't support
-                                * rotations.
-                                */
-                               goto next_session;
-                       }
-
-                       if (session->sessiond_uuid != iterated_session->sessiond_uuid) {
-                               /* Sessions do not originate from the same sessiond. */
-                               goto next_session;
-                       }
-
-                       if (LTTNG_OPTIONAL_GET(session->id_sessiond) !=
-                           LTTNG_OPTIONAL_GET(iterated_session->id_sessiond)) {
-                               /*
-                                * Sessions do not originate from the same sessiond
-                                * session.
-                                */
-                               goto next_session;
-                       }
-
-                       ongoing_rotation = iterated_session->ongoing_rotation;
-
-               next_session:
-                       pthread_mutex_unlock(&iterated_session->lock);
-               next_session_no_unlock:
-                       session_put(iterated_session);
-
-                       if (ongoing_rotation) {
-                               break;
-                       }
+       for (auto *iterated_session :
+            lttng::urcu::lfht_iteration_adapter<relay_session,
+                                                decltype(relay_session::session_n),
+                                                &relay_session::session_n>(*sessions_ht->ht)) {
+               if (!session_get(iterated_session)) {
+                       continue;
+               }
+
+               if (session == iterated_session) {
+                       /* Skip this session. */
+                       goto next_session_no_unlock;
+               }
+
+               pthread_mutex_lock(&iterated_session->lock);
+
+               if (!iterated_session->id_sessiond.is_set) {
+                       /*
+                        * Session belongs to a peer that doesn't support
+                        * rotations.
+                        */
+                       goto next_session;
+               }
+
+               if (session->sessiond_uuid != iterated_session->sessiond_uuid) {
+                       /* Sessions do not originate from the same sessiond. */
+                       goto next_session;
+               }
+
+               if (LTTNG_OPTIONAL_GET(session->id_sessiond) !=
+                   LTTNG_OPTIONAL_GET(iterated_session->id_sessiond)) {
+                       /*
+                        * Sessions do not originate from the same sessiond
+                        * session.
+                        */
+                       goto next_session;
+               }
+
+               ongoing_rotation = iterated_session->ongoing_rotation;
+
+       next_session:
+               pthread_mutex_unlock(&iterated_session->lock);
+       next_session_no_unlock:
+               session_put(iterated_session);
+
+               if (ongoing_rotation) {
+                       break;
                }
        }
 
@@ -559,7 +555,7 @@ end:
 
 static void rcu_destroy_session(struct rcu_head *rcu_head)
 {
-       struct relay_session *session = caa_container_of(rcu_head, struct relay_session, rcu_node);
+       auto *session = lttng::utils::container_of(rcu_head, &relay_session::rcu_node);
        /*
         * Since each trace has a reference on the session, it means
         * that if we are at the point where we teardown the session, no
@@ -614,16 +610,13 @@ void session_put(struct relay_session *session)
        if (!session) {
                return;
        }
-       lttng::urcu::read_lock_guard read_lock;
+       const lttng::urcu::read_lock_guard read_lock;
        urcu_ref_put(&session->ref, session_release);
 }
 
 int session_close(struct relay_session *session)
 {
        int ret = 0;
-       struct ctf_trace *trace;
-       struct lttng_ht_iter iter;
-       struct relay_stream *stream;
 
        pthread_mutex_lock(&session->lock);
        DBG("closing session %" PRIu64 ": is conn already closed %d",
@@ -632,21 +625,21 @@ int session_close(struct relay_session *session)
        session->connection_closed = true;
        pthread_mutex_unlock(&session->lock);
 
-       {
-               lttng::urcu::read_lock_guard read_lock;
-
-               cds_lfht_for_each_entry (session->ctf_traces_ht->ht, &iter.iter, trace, node.node) {
-                       ret = ctf_trace_close(trace);
-                       if (ret) {
-                               goto end;
-                       }
+       for (auto *trace :
+            lttng::urcu::lfht_iteration_adapter<ctf_trace,
+                                                decltype(ctf_trace::node),
+                                                &ctf_trace::node>(*session->ctf_traces_ht->ht)) {
+               ret = ctf_trace_close(trace);
+               if (ret) {
+                       goto end;
                }
+       }
 
-               cds_list_for_each_entry_rcu(stream, &session->recv_list, recv_node)
-               {
-                       /* Close streams which have not been published yet. */
-                       try_stream_close(stream);
-               }
+       for (auto *stream :
+            lttng::urcu::rcu_list_iteration_adapter<relay_stream, &relay_stream::recv_node>(
+                    session->recv_list)) {
+               /* Close streams which have not been published yet. */
+               try_stream_close(stream);
        }
 
 end:
@@ -661,7 +654,7 @@ end:
 
 int session_abort(struct relay_session *session)
 {
-       int ret = 0;
+       const int ret = 0;
 
        if (!session) {
                return 0;
@@ -676,25 +669,21 @@ int session_abort(struct relay_session *session)
 
 void print_sessions()
 {
-       struct lttng_ht_iter iter;
-       struct relay_session *session;
-
        if (!sessions_ht) {
                return;
        }
 
-       {
-               lttng::urcu::read_lock_guard read_lock;
-
-               cds_lfht_for_each_entry (sessions_ht->ht, &iter.iter, session, session_n.node) {
-                       if (!session_get(session)) {
-                               continue;
-                       }
-                       DBG("session %p refcount %ld session %" PRIu64,
-                           session,
-                           session->ref.refcount,
-                           session->id);
-                       session_put(session);
+       for (auto *session :
+            lttng::urcu::lfht_iteration_adapter<relay_session,
+                                                decltype(relay_session::session_n),
+                                                &relay_session::session_n>(*sessions_ht->ht)) {
+               if (!session_get(session)) {
+                       continue;
                }
+               DBG("session %p refcount %ld session %" PRIu64,
+                   session,
+                   session->ref.refcount,
+                   session->id);
+               session_put(session);
        }
 }
This page took 0.028072 seconds and 4 git commands to generate.