lib: create a clock class object from component
[babeltrace.git] / lib / graph / iterator.c
index bc8faf85aa2b7f7320f198d8311cd493708f7c73..a7c9ea17ea9ca0cb2017879ee6da1b79391edeaf 100644 (file)
@@ -54,7 +54,7 @@
 #include <babeltrace/graph/message-stream-beginning-const.h>
 #include <babeltrace/graph/message-stream-end-const.h>
 #include <babeltrace/graph/message-stream-internal.h>
-#include <babeltrace/graph/message-inactivity-internal.h>
+#include <babeltrace/graph/message-message-iterator-inactivity-internal.h>
 #include <babeltrace/graph/message-discarded-items-internal.h>
 #include <babeltrace/graph/message-stream-activity-internal.h>
 #include <babeltrace/graph/port-const.h>
@@ -440,6 +440,11 @@ bt_self_component_port_input_message_iterator_create(
        BT_ASSERT(upstream_port);
        upstream_comp = bt_port_borrow_component_inline(upstream_port);
        BT_ASSERT(upstream_comp);
+       BT_ASSERT_PRE(
+               bt_component_borrow_graph(upstream_comp)->config_state !=
+                       BT_GRAPH_CONFIGURATION_STATE_CONFIGURING,
+               "Graph is not configured: %!+g",
+               bt_component_borrow_graph(upstream_comp));
        upstream_comp_cls = upstream_comp->class;
        BT_ASSERT(upstream_comp->class->type ==
                BT_COMPONENT_CLASS_TYPE_SOURCE ||
@@ -574,7 +579,9 @@ bt_self_component_port_input_message_iterator_next(
                "message iterator is in the wrong state: %!+i", iterator);
        BT_ASSERT(iterator->upstream_component);
        BT_ASSERT(iterator->upstream_component->class);
-       BT_ASSERT_PRE(bt_component_borrow_graph(iterator->upstream_component)->is_configured,
+       BT_ASSERT_PRE(
+               bt_component_borrow_graph(iterator->upstream_component)->config_state !=
+                       BT_GRAPH_CONFIGURATION_STATE_CONFIGURING,
                "Graph is not configured: %!+g",
                bt_component_borrow_graph(iterator->upstream_component));
        BT_LIB_LOGD("Getting next self component input port "
@@ -646,13 +653,6 @@ enum bt_message_iterator_status bt_port_output_message_iterator_next(
        BT_ASSERT_PRE_NON_NULL(count_to_user, "Message count (output)");
        BT_LIB_LOGD("Getting next output port message iterator's messages: "
                "%!+i", iterator);
-
-       /*
-        * As soon as the user calls this function, we mark the graph as
-        * being definitely configured.
-        */
-       bt_graph_set_is_configured(iterator->graph, true);
-
        graph_status = bt_graph_consume_sink_no_check(iterator->graph,
                iterator->colander);
        switch (graph_status) {
@@ -825,6 +825,12 @@ bt_port_output_message_iterator_create(struct bt_graph *graph,
         * member.
         */
        bt_graph_set_can_consume(iterator->graph, false);
+
+       /*
+        * Also set the graph as being configured: it has no active sink
+        * anyway, so we don't need to call bt_graph_configure().
+        */
+       graph->config_state = BT_GRAPH_CONFIGURATION_STATE_CONFIGURED;
        goto end;
 
 error:
@@ -866,7 +872,9 @@ bt_bool bt_self_component_port_input_message_iterator_can_seek_ns_from_origin(
 
        BT_ASSERT_PRE_NON_NULL(iterator, "Message iterator");
        BT_ASSERT_PRE_ITER_HAS_STATE_TO_SEEK(iterator);
-       BT_ASSERT_PRE(bt_component_borrow_graph(iterator->upstream_component)->is_configured,
+       BT_ASSERT_PRE(
+               bt_component_borrow_graph(iterator->upstream_component)->config_state !=
+                       BT_GRAPH_CONFIGURATION_STATE_CONFIGURING,
                "Graph is not configured: %!+g",
                bt_component_borrow_graph(iterator->upstream_component));
 
@@ -895,7 +903,9 @@ bt_bool bt_self_component_port_input_message_iterator_can_seek_beginning(
 
        BT_ASSERT_PRE_NON_NULL(iterator, "Message iterator");
        BT_ASSERT_PRE_ITER_HAS_STATE_TO_SEEK(iterator);
-       BT_ASSERT_PRE(bt_component_borrow_graph(iterator->upstream_component)->is_configured,
+       BT_ASSERT_PRE(
+               bt_component_borrow_graph(iterator->upstream_component)->config_state !=
+                       BT_GRAPH_CONFIGURATION_STATE_CONFIGURING,
                "Graph is not configured: %!+g",
                bt_component_borrow_graph(iterator->upstream_component));
 
@@ -949,7 +959,9 @@ bt_self_component_port_input_message_iterator_seek_beginning(
 
        BT_ASSERT_PRE_NON_NULL(iterator, "Message iterator");
        BT_ASSERT_PRE_ITER_HAS_STATE_TO_SEEK(iterator);
-       BT_ASSERT_PRE(bt_component_borrow_graph(iterator->upstream_component)->is_configured,
+       BT_ASSERT_PRE(
+               bt_component_borrow_graph(iterator->upstream_component)->config_state !=
+                       BT_GRAPH_CONFIGURATION_STATE_CONFIGURING,
                "Graph is not configured: %!+g",
                bt_component_borrow_graph(iterator->upstream_component));
        BT_ASSERT_PRE(
@@ -985,15 +997,15 @@ int get_message_ns_from_origin(const struct bt_message *msg,
                const struct bt_message_event *event_msg =
                        (const void *) msg;
 
-               clk_snapshot = event_msg->event->default_cs;
+               clk_snapshot = event_msg->default_cs;
                BT_ASSERT_PRE(clk_snapshot,
-                       "Event has no default clock snapshot: %!+e",
-                       event_msg->event);
+                       "Event message has no default clock snapshot: %!+n",
+                       event_msg);
                break;
        }
-       case BT_MESSAGE_TYPE_INACTIVITY:
+       case BT_MESSAGE_TYPE_MESSAGE_ITERATOR_INACTIVITY:
        {
-               const struct bt_message_inactivity *inactivity_msg =
+               const struct bt_message_message_iterator_inactivity *inactivity_msg =
                        (const void *) msg;
 
                clk_snapshot = inactivity_msg->default_cs;
@@ -1002,8 +1014,16 @@ int get_message_ns_from_origin(const struct bt_message *msg,
        }
        case BT_MESSAGE_TYPE_PACKET_BEGINNING:
        case BT_MESSAGE_TYPE_PACKET_END:
-               /* Ignore */
-               goto end;
+       {
+               const struct bt_message_packet *packet_msg =
+                       (const void *) msg;
+
+               clk_snapshot = packet_msg->default_cs;
+               BT_ASSERT_PRE(clk_snapshot,
+                       "Packet message has no default clock snapshot: %!+n",
+                       packet_msg);
+               break;
+       }
        case BT_MESSAGE_TYPE_DISCARDED_EVENTS:
        case BT_MESSAGE_TYPE_DISCARDED_PACKETS:
        {
@@ -1154,7 +1174,7 @@ enum bt_message_iterator_status find_message_ge_ns_from_origin(
                 * Find first message which has a default clock snapshot
                 * that is greater than or equal to the requested value.
                 *
-                * For event and inactivity messages, compare with the
+                * For event and message iterator inactivity messages, compare with the
                 * default clock snapshot.
                 *
                 * For packet beginning messages, compare with the
@@ -1276,7 +1296,9 @@ bt_self_component_port_input_message_iterator_seek_ns_from_origin(
 
        BT_ASSERT_PRE_NON_NULL(iterator, "Message iterator");
        BT_ASSERT_PRE_ITER_HAS_STATE_TO_SEEK(iterator);
-       BT_ASSERT_PRE(bt_component_borrow_graph(iterator->upstream_component)->is_configured,
+       BT_ASSERT_PRE(
+               bt_component_borrow_graph(iterator->upstream_component)->config_state !=
+                       BT_GRAPH_CONFIGURATION_STATE_CONFIGURING,
                "Graph is not configured: %!+g",
                bt_component_borrow_graph(iterator->upstream_component));
        BT_ASSERT_PRE(
This page took 0.025804 seconds and 4 git commands to generate.