X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=plugins%2Fctf%2Ffs%2Ffs.c;h=cd58753aea240a5032a271e17cf57bf8900896e4;hb=760051fa35b387a5d6090440a2daa58524283130;hp=6f0a3c0a77271d994a97a0a1fea28b0575958859;hpb=512ccb9966ca2179338e267c92da887c543afc6c;p=babeltrace.git diff --git a/plugins/ctf/fs/fs.c b/plugins/ctf/fs/fs.c index 6f0a3c0a..cd58753a 100644 --- a/plugins/ctf/fs/fs.c +++ b/plugins/ctf/fs/fs.c @@ -27,6 +27,7 @@ */ #include +#include #include #include #include "fs-internal.h" @@ -34,25 +35,93 @@ static bool ctf_fs_debug; static -struct ctf_fs_component *ctf_fs_create(struct bt_value *params) +struct bt_notification *ctf_fs_iterator_get( + struct bt_notification_iterator *iterator) { - return g_new0(struct ctf_fs_component, 1); + return NULL; } static -void ctf_fs_destroy(void *data) +enum bt_notification_iterator_status ctf_fs_iterator_next( + struct bt_notification_iterator *iterator) { - g_free(data); + return BT_NOTIFICATION_ITERATOR_STATUS_UNSUPPORTED; } -BT_HIDDEN +static +void ctf_fs_iterator_destroy_data(struct ctf_fs_iterator *ctf_it) +{ + g_free(ctf_it); +} + +static +void ctf_fs_iterator_destroy(struct bt_notification_iterator *it) +{ + void *data = bt_notification_iterator_get_private_data(it); + + ctf_fs_iterator_destroy_data(data); +} + +static enum bt_component_status ctf_fs_iterator_init(struct bt_component *source, struct bt_notification_iterator *it) { enum bt_component_status ret = BT_COMPONENT_STATUS_OK; + struct ctf_fs_iterator *ctf_it; assert(source && it); + ctf_it = g_new0(struct ctf_fs_iterator, 1); + if (!ctf_it) { + ret = BT_COMPONENT_STATUS_NOMEM; + goto end; + } + + ret = bt_notification_iterator_set_get_cb(it, ctf_fs_iterator_get); + if (ret) { + goto error; + } + + ret = bt_notification_iterator_set_next_cb(it, ctf_fs_iterator_next); + if (ret) { + goto error; + } + + ret = bt_notification_iterator_set_destroy_cb(it, + ctf_fs_iterator_destroy); + if (ret) { + goto error; + } + + ret = bt_notification_iterator_set_private_data(it, ctf_it); + if (ret) { + goto error; + } +end: return ret; +error: + (void) bt_notification_iterator_set_private_data(it, NULL); + ctf_fs_iterator_destroy_data(ctf_it); + return ret; +} + +static +struct ctf_fs_component *ctf_fs_create(struct bt_value *params) +{ + return g_new0(struct ctf_fs_component, 1); +} + +static +void ctf_fs_destroy_data(struct ctf_fs_component *component) +{ + g_free(component); +} + +static +void ctf_fs_destroy(struct bt_component *component) +{ + void *data = bt_component_get_private_data(component); + + ctf_fs_destroy_data(data); } BT_HIDDEN @@ -89,6 +158,6 @@ end: return ret; error: (void) bt_component_set_private_data(source, NULL); - ctf_fs_destroy(ctf_fs); + ctf_fs_destroy_data(ctf_fs); return ret; }