#include <babeltrace/graph/notification-iterator.h>
#include <babeltrace/graph/private-notification-iterator.h>
#include <babeltrace/types.h>
+#include <stdbool.h>
struct bt_port;
};
enum bt_notification_iterator_state {
+ /* Iterator is not initialized. */
+ BT_NOTIFICATION_ITERATOR_STATE_NON_INITIALIZED,
+
/* Iterator is active, not at the end yet, and not finalized. */
BT_NOTIFICATION_ITERATOR_STATE_ACTIVE,
}
}
+ iterator->state = BT_NOTIFICATION_ITERATOR_STATE_ACTIVE;
g_ptr_array_add(connection->iterators, iterator);
BT_LOGD("Created notification iterator from connection: "
"conn-addr=%p, upstream-port-addr=%p, "
assert(iterator);
switch (iterator->state) {
+ case BT_NOTIFICATION_ITERATOR_STATE_NON_INITIALIZED:
+ /* Skip user finalization if user initialization failed */
+ BT_LOGD("Not finalizing non-initialized notification iterator: "
+ "addr=%p", iterator);
+ return;
case BT_NOTIFICATION_ITERATOR_STATE_FINALIZED:
case BT_NOTIFICATION_ITERATOR_STATE_FINALIZED_AND_ENDED:
/* Already finalized */
iterator->upstream_component = upstream_comp;
iterator->upstream_port = upstream_port;
iterator->connection = connection;
- iterator->state = BT_NOTIFICATION_ITERATOR_STATE_ACTIVE;
+ iterator->state = BT_NOTIFICATION_ITERATOR_STATE_NON_INITIALIZED;
BT_LOGD("Created notification iterator: "
"upstream-comp-addr=%p, upstream-comp-name=\"%s\", "
"upstream-port-addr=%p, upstream-port-name=\"%s\", "