Fix: tests: fix unused-but-set warning in test_fd_tracker.c
[lttng-tools.git] / src / bin / lttng-sessiond / condition-internal.c
index 07b32f86d611367820e743ebea9a754b3ffe064c..dd9c244b3253ac68694799348066bc048daa1274 100644 (file)
 #include <lttng/condition/buffer-usage-internal.h>
 #include <lttng/condition/session-consumed-size-internal.h>
 #include <lttng/condition/session-rotation-internal.h>
-#include <lttng/condition/on-event-internal.h>
-#include <lttng/condition/on-event.h>
+#include <lttng/condition/event-rule-matches-internal.h>
+#include <lttng/condition/event-rule-matches.h>
 #include <lttng/event-rule/event-rule-internal.h>
-#include <lttng/condition/on-event-internal.h>
+#include <lttng/condition/event-rule-matches-internal.h>
 #include "condition-internal.h"
 
 static
@@ -44,10 +44,7 @@ unsigned long lttng_condition_buffer_usage_hash(
                                lttng_ht_seed);
        }
        if (condition->threshold_ratio.set) {
-               uint64_t val;
-
-               val = condition->threshold_ratio.value * (double) UINT32_MAX;
-               hash ^= hash_key_u64(&val, lttng_ht_seed);
+               hash ^= hash_key_u64(&condition->threshold_ratio.value, lttng_ht_seed);
        } else if (condition->threshold_bytes.set) {
                uint64_t val;
 
@@ -90,23 +87,22 @@ unsigned long lttng_condition_session_rotation_hash(
                        struct lttng_condition_session_rotation, parent);
        condition_type = (unsigned long) condition->parent.type;
        hash = hash_key_ulong((void *) condition_type, lttng_ht_seed);
-       assert(condition->session_name);
+       LTTNG_ASSERT(condition->session_name);
        hash ^= hash_key_str(condition->session_name, lttng_ht_seed);
        return hash;
 }
 
-static
-unsigned long lttng_condition_on_event_hash(
-       const struct lttng_condition *condition)
+static unsigned long lttng_condition_event_rule_matches_hash(
+               const struct lttng_condition *condition)
 {
        unsigned long hash, condition_type;
        enum lttng_condition_status condition_status;
        const struct lttng_event_rule *event_rule;
 
        condition_type = (unsigned long) condition->type;
-       condition_status = lttng_condition_on_event_get_rule(condition,
-                       &event_rule);
-       assert(condition_status == LTTNG_CONDITION_STATUS_OK);
+       condition_status = lttng_condition_event_rule_matches_get_rule(
+                       condition, &event_rule);
+       LTTNG_ASSERT(condition_status == LTTNG_CONDITION_STATUS_OK);
 
        hash = hash_key_ulong((void *) condition_type, lttng_ht_seed);
        return hash ^ lttng_event_rule_hash(event_rule);
@@ -128,10 +124,40 @@ unsigned long lttng_condition_hash(const struct lttng_condition *condition)
        case LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING:
        case LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED:
                return lttng_condition_session_rotation_hash(condition);
-       case LTTNG_CONDITION_TYPE_ON_EVENT:
-               return lttng_condition_on_event_hash(condition);
+       case LTTNG_CONDITION_TYPE_EVENT_RULE_MATCHES:
+               return lttng_condition_event_rule_matches_hash(condition);
        default:
-               //ERR("[notification-thread] Unexpected condition type caught");
                abort();
        }
 }
+
+struct lttng_condition *lttng_condition_copy(const struct lttng_condition *condition)
+{
+       int ret;
+       struct lttng_payload copy_buffer;
+       struct lttng_condition *copy = NULL;
+
+       lttng_payload_init(&copy_buffer);
+
+       ret = lttng_condition_serialize(condition, &copy_buffer);
+       if (ret < 0) {
+               goto end;
+       }
+
+       {
+               struct lttng_payload_view view =
+                               lttng_payload_view_from_payload(
+                                               &copy_buffer, 0, -1);
+
+               ret = lttng_condition_create_from_payload(
+                               &view, &copy);
+               if (ret < 0) {
+                       copy = NULL;
+                       goto end;
+               }
+       }
+
+end:
+       lttng_payload_reset(&copy_buffer);
+       return copy;
+}
This page took 0.024705 seconds and 4 git commands to generate.