From bfd20a42a584efb1164db373e5402092d8a2ed03 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Tue, 19 May 2015 22:32:07 -0400 Subject: [PATCH] Start ctf reader implementation stub MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérémie Galarneau --- include/babeltrace/plugin/plugin-system.h | 2 +- plugins/ctf/reader.c | 97 ++++++++++++++++++++--- 2 files changed, 87 insertions(+), 12 deletions(-) diff --git a/include/babeltrace/plugin/plugin-system.h b/include/babeltrace/plugin/plugin-system.h index 67406353..a606a459 100644 --- a/include/babeltrace/plugin/plugin-system.h +++ b/include/babeltrace/plugin/plugin-system.h @@ -99,7 +99,7 @@ extern struct bt_plugin *bt_plugin_sink_create(const char *name, /* Notification iterator functions */ /** - * Allocate an notification iterator. + * Allocate a notification iterator. * * @param plugin Plug-in instance * @param next_cb Callback advancing to the next notification diff --git a/plugins/ctf/reader.c b/plugins/ctf/reader.c index f642e3c7..181d400a 100644 --- a/plugins/ctf/reader.c +++ b/plugins/ctf/reader.c @@ -1,28 +1,103 @@ -enum bt_plugin_type bt_plugin_get_type(void) +#include +#include +#include +#include + +const char *plugin_name = "ctf"; + +struct ctf_reader { + FILE *err; +}; + +enum bt_plugin_type bt_plugin_lib_get_type(void) { return BT_PLUGIN_TYPE_SOURCE; } -const char *bt_plugin_get_format_name(void) +const char *bt_plugin_lib_get_format_name(void) { - return "ctf"; + return plugin_name; } -static struct bt_notification_iterator *create_iterator(struct bt_plugin *plugin) +static +void ctf_reader_destroy(struct bt_plugin *plugin) { - return NULL; + struct ctf_reader *reader; + + if (!plugin) { + return; + } + + reader = bt_plugin_get_private_data(plugin); + if (!reader) { + return; + } + + g_free(reader); } -static void destroy_mein_shitzle(struct bt_plugin *plugin) +static +struct bt_notification_iterator *ctf_reader_iterator_create( + struct bt_plugin *plugin) { - free(bt_plugin_get_data(plugin)); + return NULL; } -struct bt_plugin *bt_plugin_create(struct bt_ctf_field *params) +/* Move this to bt_plugin */ +static +enum bt_plugin_status ctf_reader_set_error_stream( + struct bt_plugin *plugin, FILE *stream) { - void *mein_shit = 0x4589; + struct ctf_reader *reader; + enum bt_plugin_status ret = BT_PLUGIN_STATUS_OK; - return bt_plugin_source_create("ctf", mein_shit, destroy_func, - create_iterator); + if (!plugin) { + ret = BT_PLUGIN_STATUS_INVAL; + goto end; + } + + reader = bt_plugin_get_private_data(plugin); + if (!reader) { + ret = BT_PLUGIN_STATUS_ERROR; + goto end; + } + + reader->stream = stream; +end: + return ret; } +struct bt_plugin *bt_plugin_lib_create(struct bt_object *params) +{ + enum bt_plugin_status ret; + struct bt_plugin *plugin = NULL; + struct ctf_reader *reader = g_new0(struct ctf_reader, 1); + + if (!reader) { + goto error; + } + + plugin = bt_plugin_source_create(plugin_name, reader, + ctf_reader_destroy, ctf_reader_iterator_create); + if (!plugin) { + goto error; + } + reader = NULL; + + ret = bt_plugin_set_error_stream_cb(plugin, + ctf_reader_set_error_stream); + if (ret != BT_PLUGIN_STATUS_OK) { + goto error; + } +end: + return plugin; +error: + if (reader) { + ctf_reader_destroy(reader); + } + if (plugin) { + bt_plugin_put(plugin); + plugin = NULL; + } + goto end; +} -- 2.34.1