lib: use object pool for event and packet notifications
[babeltrace.git] / lib / graph / iterator.c
index b98121a1d596a65f06854b10b2318bde390d563d..799888bc4f772b1e1bd01267f2ebe7da9b9183b9 100644 (file)
@@ -78,7 +78,7 @@ struct stream_state {
 };
 
 static
-void stream_destroy_listener(struct bt_stream *stream, void *data)
+void stream_destroy_listener(struct bt_stream_common *stream, void *data)
 {
        struct bt_notification_iterator_private_connection *iterator = data;
 
@@ -184,7 +184,7 @@ void bt_private_connection_notification_iterator_destroy(struct bt_object *obj)
                        BT_ASSERT(stream_gptr);
 
                        BT_LOGD_STR("Removing stream's destroy listener for notification iterator.");
-                       bt_stream_remove_destroy_listener(
+                       bt_stream_common_remove_destroy_listener(
                                (void *) stream_gptr, stream_destroy_listener,
                                iterator);
                }
@@ -347,6 +347,7 @@ enum bt_connection_status bt_private_connection_notification_iterator_create(
        iterator->upstream_component = upstream_comp;
        iterator->upstream_port = upstream_port;
        iterator->connection = connection;
+       iterator->graph = bt_component_borrow_graph(upstream_comp);
        iterator->state = BT_PRIVATE_CONNECTION_NOTIFICATION_ITERATOR_STATE_NON_INITIALIZED;
        BT_LOGD("Created notification iterator: "
                "upstream-comp-addr=%p, upstream-comp-name=\"%s\", "
@@ -368,7 +369,7 @@ end:
 void *bt_private_connection_private_notification_iterator_get_user_data(
                struct bt_private_connection_private_notification_iterator *private_iterator)
 {
-       struct bt_notification_iterator_private_connection *iterator =
+       struct bt_notification_iterator_private_connection *iterator = (void *)
                bt_private_connection_notification_iterator_borrow_from_private(private_iterator);
 
        BT_ASSERT_PRE_NON_NULL(private_iterator, "Notification iterator");
@@ -380,7 +381,7 @@ bt_private_connection_private_notification_iterator_set_user_data(
                struct bt_private_connection_private_notification_iterator *private_iterator,
                void *data)
 {
-       struct bt_notification_iterator_private_connection *iterator =
+       struct bt_notification_iterator_private_connection *iterator = (void *)
                bt_private_connection_notification_iterator_borrow_from_private(private_iterator);
 
        BT_ASSERT_PRE_NON_NULL(iterator, "Notification iterator");
@@ -390,12 +391,22 @@ bt_private_connection_private_notification_iterator_set_user_data(
        return BT_NOTIFICATION_ITERATOR_STATUS_OK;
 }
 
-struct bt_notification *bt_notification_iterator_get_notification(
+struct bt_graph *bt_private_connection_private_notification_iterator_borrow_graph(
+               struct bt_private_connection_private_notification_iterator *private_iterator)
+{
+       struct bt_notification_iterator_private_connection *iterator = (void *)
+               bt_private_connection_notification_iterator_borrow_from_private(
+                       private_iterator);
+
+       BT_ASSERT_PRE_NON_NULL(iterator, "Notification iterator");
+       return iterator->graph;
+}
+
+struct bt_notification *bt_notification_iterator_borrow_notification(
                struct bt_notification_iterator *iterator)
 {
        BT_ASSERT_PRE_NON_NULL(iterator, "Notification iterator");
-       return bt_get(
-               bt_notification_iterator_borrow_current_notification(iterator));
+       return bt_notification_iterator_borrow_current_notification(iterator);
 }
 
 BT_ASSERT_PRE_FUNC
@@ -1005,10 +1016,8 @@ end:
 }
 
 struct bt_notification_iterator *
-bt_private_connection_notification_iterator_from_private(
+bt_private_connection_notification_iterator_borrow_from_private(
                struct bt_private_connection_private_notification_iterator *private_notification_iterator)
 {
-       return bt_get(
-               bt_private_connection_notification_iterator_borrow_from_private(
-                       private_notification_iterator));
+       return (void *) private_notification_iterator;
 }
This page took 0.024115 seconds and 4 git commands to generate.