lib: use object pool for event and packet notifications
[babeltrace.git] / include / babeltrace / graph / notification-iterator-internal.h
index fd3dd4f30ec0134f140ca1491e8967d6ca288947..2d2ef9cabf08eacccf91e980c633fb209aa4a226 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef BABELTRACE_COMPONENT_NOTIFICATION_ITERATOR_INTERNAL_H
-#define BABELTRACE_COMPONENT_NOTIFICATION_ITERATOR_INTERNAL_H
+#ifndef BABELTRACE_GRAPH_NOTIFICATION_ITERATOR_INTERNAL_H
+#define BABELTRACE_GRAPH_NOTIFICATION_ITERATOR_INTERNAL_H
 
 /*
  * BabelTrace - Notification Iterator Internal
@@ -34,8 +34,8 @@
 #include <babeltrace/graph/notification-iterator.h>
 #include <babeltrace/graph/private-connection-private-notification-iterator.h>
 #include <babeltrace/types.h>
+#include <babeltrace/assert-internal.h>
 #include <stdbool.h>
-#include <assert.h>
 
 struct bt_port;
 struct bt_graph;
@@ -95,43 +95,28 @@ struct bt_notification_iterator_private_connection {
        struct bt_component *upstream_component; /* Weak */
        struct bt_port *upstream_port; /* Weak */
        struct bt_connection *connection; /* Weak */
-       GQueue *queue; /* struct bt_notification * (owned by this) */
+       struct bt_graph *graph; /* Weak */
 
        /*
         * This hash table keeps the state of a stream as viewed by
-        * this notification iterator. This is used to:
+        * this notification iterator. This is used to, in developer
+        * mode:
         *
         * * Automatically enqueue "stream begin", "packet begin",
         *   "packet end", and "stream end" notifications depending
         *   on the stream's state and on the next notification returned
         *   by the upstream component.
         *
-        * * Make sure that, once the notification iterator has seen
-        *   a "stream end" notification for a given stream, that no
-        *   other notifications which refer to this stream can be
-        *   delivered by this iterator.
+        * * Make sure that, once the notification iterator has seen a
+        *   "stream end" notification for a given stream, no other
+        *   notifications which refer to this stream can be delivered
+        *   by this iterator.
         *
-        * The key (struct bt_ctf_stream *) is not owned by this. The
+        * The key (struct bt_stream *) is not owned by this. The
         * value is an allocated state structure.
         */
        GHashTable *stream_states;
 
-       /*
-        * This is an array of actions which can be rolled back. It's
-        * similar to the memento pattern, but it's not exactly that. It
-        * is allocated once and reset for each notification to process.
-        * More details near the implementation.
-        */
-       GArray *actions;
-
-       /*
-        * This is a mask of notifications to which the user of this
-        * iterator is subscribed
-        * (see enum bt_private_connection_notification_iterator_notif_type
-        * above).
-        */
-       uint32_t subscription_mask;
-
        enum bt_private_connection_notification_iterator_state state;
        void *user_data;
 };
@@ -147,7 +132,7 @@ static inline
 struct bt_notification *bt_notification_iterator_borrow_current_notification(
                struct bt_notification_iterator *iterator)
 {
-       assert(iterator);
+       BT_ASSERT(iterator);
        return iterator->current_notification;
 }
 
@@ -156,19 +141,11 @@ void bt_notification_iterator_replace_current_notification(
                struct bt_notification_iterator *iterator,
                struct bt_notification *notification)
 {
-       assert(iterator);
+       BT_ASSERT(iterator);
        bt_put(iterator->current_notification);
        iterator->current_notification = bt_get(notification);
 }
 
-static inline
-struct bt_notification_iterator_private_connection *
-bt_private_connection_notification_iterator_from_private(
-               struct bt_private_connection_private_notification_iterator *private_notification_iterator)
-{
-       return (void *) private_notification_iterator;
-}
-
 static inline
 struct bt_private_connection_private_notification_iterator *
 bt_private_connection_private_notification_iterator_from_notification_iterator(
@@ -181,7 +158,6 @@ BT_HIDDEN
 enum bt_connection_status bt_private_connection_notification_iterator_create(
                struct bt_component *upstream_comp,
                struct bt_port *upstream_port,
-               const enum bt_notification_type *notification_types,
                struct bt_connection *connection,
                struct bt_notification_iterator_private_connection **iterator);
 
@@ -238,4 +214,4 @@ const char *bt_private_connection_notification_iterator_state_string(
        }
 };
 
-#endif /* BABELTRACE_COMPONENT_NOTIFICATION_ITERATOR_INTERNAL_H */
+#endif /* BABELTRACE_GRAPH_NOTIFICATION_ITERATOR_INTERNAL_H */
This page took 0.040326 seconds and 4 git commands to generate.