X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Fgraph%2Fnotification%2Fnotification.c;h=0bcfb7dfbdacf225ba6f6898b1d105f5aba6f8e3;hb=5c5632787fc9cafa602c89a28966bcfd01ec0204;hp=9dc64d796dcfe99060bcca9877ec8b0928c50359;hpb=c5504f7322f93b32b4bcc65a950ed61efadd694a;p=babeltrace.git diff --git a/lib/graph/notification/notification.c b/lib/graph/notification/notification.c index 9dc64d79..0bcfb7df 100644 --- a/lib/graph/notification/notification.c +++ b/lib/graph/notification/notification.c @@ -24,35 +24,53 @@ * SOFTWARE. */ +#define BT_LOG_TAG "NOTIF" +#include + #include +#include +#include +#include + +BT_ASSERT_PRE_FUNC +static inline void _init_seq_num(struct bt_notification *notification) +{ + notification->seq_num = UINT64_C(-1); +} + +#ifdef BT_DEV_MODE +# define init_seq_num _init_seq_num +#else +# define init_seq_num(_notif) +#endif /* BT_DEV_MODE */ BT_HIDDEN void bt_notification_init(struct bt_notification *notification, enum bt_notification_type type, - bt_object_release_func release) + bt_object_release_func release, + struct bt_graph *graph) { - assert(type > BT_NOTIFICATION_TYPE_ALL && - type < BT_NOTIFICATION_TYPE_NR); + BT_ASSERT(type >= 0 && type < BT_NOTIFICATION_TYPE_NR); notification->type = type; + init_seq_num(notification); bt_object_init(¬ification->base, release); + notification->graph = graph; + + if (graph) { + bt_graph_add_notification(graph, notification); + } } enum bt_notification_type bt_notification_get_type( struct bt_notification *notification) { - return notification ? notification->type : BT_NOTIFICATION_TYPE_UNKNOWN; + BT_ASSERT_PRE_NON_NULL(notification, "Notification"); + return notification->type; } -struct bt_ctf_stream *bt_notification_get_stream( - struct bt_notification *notification) +BT_HIDDEN +void bt_notification_unlink_graph(struct bt_notification *notif) { - struct bt_ctf_stream *stream = NULL; - - if (!notification || !notification->get_stream) { - goto end; - } - - stream = notification->get_stream(notification); -end: - return stream; + BT_ASSERT(notif); + notif->graph = NULL; }