X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fgraph%2Fgraph-internal.h;h=9e6012ec641e18225640869a8429db2205ec15fd;hb=5c5632787fc9cafa602c89a28966bcfd01ec0204;hp=cd1b557d946a9287a705abf333a5fe454397f2c1;hpb=312c056ae3d374b253fa0cfe5ed576c0b0e5e569;p=babeltrace.git diff --git a/include/babeltrace/graph/graph-internal.h b/include/babeltrace/graph/graph-internal.h index cd1b557d..9e6012ec 100644 --- a/include/babeltrace/graph/graph-internal.h +++ b/include/babeltrace/graph/graph-internal.h @@ -29,8 +29,10 @@ #include #include +#include #include #include +#include #include #include #include @@ -80,6 +82,31 @@ struct bt_graph { GArray *ports_connected; GArray *ports_disconnected; } listeners; + + /* Pool of `struct bt_notification_event *` */ + struct bt_object_pool event_notif_pool; + + /* Pool of `struct bt_notification_packet_begin *` */ + struct bt_object_pool packet_begin_notif_pool; + + /* Pool of `struct bt_notification_packet_end *` */ + struct bt_object_pool packet_end_notif_pool; + + /* + * Array of `struct bt_notification *` (weak). + * + * This is an array of all the notifications ever created from + * this graph. Some of them can be in one of the pools above, + * some of them can be at large. Because each notification has a + * weak pointer to the graph containing its pool, we need to + * notify each notification that the graph is gone on graph + * destruction. + * + * TODO: When we support a maximum size for object pools, + * add a way for a notification to remove itself from this + * array (on destruction). + */ + GPtrArray *notifications; }; static inline @@ -130,6 +157,10 @@ BT_HIDDEN int bt_graph_remove_unconnected_component(struct bt_graph *graph, struct bt_component *component); +BT_HIDDEN +void bt_graph_add_notification(struct bt_graph *graph, + struct bt_notification *notif); + static inline const char *bt_graph_status_string(enum bt_graph_status status) {