X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=plugins%2Fctf%2Ffs%2Ffs.c;h=ba550f2f973f4f5c480b63612e52e6bb4e3a5993;hb=78586d8a10bfb11d34d187697ae15e9255c6ddf4;hp=adc1b30d105c7cb278aea0b0097b164c0d3b3d65;hpb=1ef09eb5014a506f82104a01fb89f9bd58a14c28;p=babeltrace.git diff --git a/plugins/ctf/fs/fs.c b/plugins/ctf/fs/fs.c index adc1b30d..ba550f2f 100644 --- a/plugins/ctf/fs/fs.c +++ b/plugins/ctf/fs/fs.c @@ -41,14 +41,52 @@ static struct bt_notification *ctf_fs_iterator_get( struct bt_notification_iterator *iterator) { - return NULL; + struct bt_notification *notification = NULL; + struct ctf_fs_component *ctf_fs; + struct bt_component *component = bt_notification_iterator_get_component( + iterator); + + if (!component) { + goto end; + } + + ctf_fs = bt_component_get_private_data(component); + if (!ctf_fs) { + goto end; + } + + notification = bt_get(ctf_fs->current_notification); +end: + return notification; } static enum bt_notification_iterator_status ctf_fs_iterator_next( struct bt_notification_iterator *iterator) { - return BT_NOTIFICATION_ITERATOR_STATUS_UNSUPPORTED; + enum bt_notification_iterator_status ret; + struct bt_notification *notification = NULL; + struct ctf_fs_component *ctf_fs; + struct bt_component *component = bt_notification_iterator_get_component( + iterator); + + if (!component) { + ret = BT_NOTIFICATION_ITERATOR_STATUS_ERROR; + goto end; + } + + ctf_fs = bt_component_get_private_data(component); + assert(ctf_fs); + + ret = ctf_fs_data_stream_get_next_notification(ctf_fs, ¬ification); + if (ret || !notification) { + goto end; + } + + bt_put(ctf_fs->current_notification); + ctf_fs->current_notification = notification; +end: + return BT_NOTIFICATION_ITERATOR_STATUS_OK; } static @@ -99,6 +137,7 @@ enum bt_component_status ctf_fs_iterator_init(struct bt_component *source, if (ret) { goto error; } + end: return ret; error: @@ -116,6 +155,7 @@ void ctf_fs_destroy_data(struct ctf_fs_component *component) ctf_fs_metadata_fini(&component->metadata); ctf_fs_data_stream_fini(&component->data_stream); + BT_PUT(component->current_notification); g_free(component); }