X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=lib%2Fiterator.c;h=4d201dc48942d911edc5647db48837869fcb526a;hp=8e30a075a55302d305aee34520881926f4961ef4;hb=1842a4c801d0878adf40862fda0c310a52a6fdd2;hpb=6f3077a2db5bfeb47ed75b1c7c731a5e8e60aa43 diff --git a/lib/iterator.c b/lib/iterator.c index 8e30a075..4d201dc4 100644 --- a/lib/iterator.c +++ b/lib/iterator.c @@ -21,8 +21,10 @@ #include #include #include +#include #include #include +#include #include struct stream_saved_pos { @@ -35,7 +37,7 @@ struct stream_saved_pos { ssize_t offset; /* offset from base, in bits. EOF for end of file. */ }; -struct babeltrace_saved_pos { +struct bt_saved_pos { struct trace_collection *tc; GArray *stream_saved_pos; /* Contains struct stream_saved_pos */ }; @@ -48,7 +50,7 @@ static int stream_read_event(struct ctf_file_stream *sin) if (ret == EOF) return EOF; else if (ret) { - fprintf(stdout, "[error] Reading event failed.\n"); + fprintf(stderr, "[error] Reading event failed.\n"); return ret; } return 0; @@ -73,7 +75,7 @@ int stream_compare(void *a, void *b) * The stream_id parameter is only useful for BT_SEEK_RESTORE. */ static int babeltrace_filestream_seek(struct ctf_file_stream *file_stream, - const struct trace_collection_pos *begin_pos, + const struct bt_iter_pos *begin_pos, unsigned long stream_id) { int ret = 0; @@ -100,14 +102,14 @@ static int babeltrace_filestream_seek(struct ctf_file_stream *file_stream, } /* - * babeltrace_iter_seek: seek iterator to given position. + * bt_iter_seek: seek iterator to given position. */ -int babeltrace_iter_seek(struct babeltrace_iter *iter, - const struct trace_collection_pos *begin_pos) +int bt_iter_seek(struct bt_iter *iter, + const struct bt_iter_pos *begin_pos) { int i, stream_id; int ret = 0; - struct trace_collection *tc = iter->tc; + struct trace_collection *tc = iter->ctx->tc; for (i = 0; i < tc->array->len; i++) { struct ctf_trace *tin; @@ -140,34 +142,36 @@ end: return ret; } -struct babeltrace_iter *babeltrace_iter_create(struct trace_collection *tc, - struct trace_collection_pos *begin_pos, - struct trace_collection_pos *end_pos) +struct bt_iter *bt_iter_create(struct bt_context *ctx, + struct bt_iter_pos *begin_pos, + struct bt_iter_pos *end_pos) { int i, stream_id; int ret = 0; - struct babeltrace_iter *iter; + struct bt_iter *iter; - iter = malloc(sizeof(struct babeltrace_iter)); + iter = malloc(sizeof(struct bt_iter)); if (!iter) goto error_malloc; iter->stream_heap = g_new(struct ptr_heap, 1); - iter->tc = tc; iter->end_pos = end_pos; iter->callbacks = g_array_new(0, 1, sizeof(struct bt_stream_callbacks)); iter->recalculate_dep_graph = 0; iter->main_callbacks.callback = NULL; iter->dep_gc = g_ptr_array_new(); + if (bt_context_get(ctx) != 0) + goto error_ctx; + iter->ctx = ctx; ret = heap_init(iter->stream_heap, 0, stream_compare); if (ret < 0) goto error_heap_init; - for (i = 0; i < tc->array->len; i++) { + for (i = 0; i < ctx->tc->array->len; i++) { struct ctf_trace *tin; struct trace_descriptor *td_read; - td_read = g_ptr_array_index(tc->array, i); + td_read = g_ptr_array_index(ctx->tc->array, i); tin = container_of(td_read, struct ctf_trace, parent); /* Populate heap with each stream */ @@ -210,12 +214,13 @@ error: heap_free(iter->stream_heap); error_heap_init: g_free(iter->stream_heap); +error_ctx: free(iter); error_malloc: return NULL; } -void babeltrace_iter_destroy(struct babeltrace_iter *iter) +void bt_iter_destroy(struct bt_iter *iter) { struct bt_stream_callbacks *bt_stream_cb; struct bt_callback_chain *bt_chain; @@ -244,10 +249,12 @@ void babeltrace_iter_destroy(struct babeltrace_iter *iter) g_array_free(bt_stream_cb->per_id_callbacks, TRUE); } + bt_context_put(iter->ctx); + free(iter); } -int babeltrace_iter_next(struct babeltrace_iter *iter) +int bt_iter_next(struct bt_iter *iter) { struct ctf_file_stream *file_stream, *removed; int ret; @@ -276,7 +283,7 @@ end: return ret; } -int babeltrace_iter_read_event(struct babeltrace_iter *iter, +int bt_iter_read_event(struct bt_iter *iter, struct ctf_stream **stream, struct ctf_stream_event **event) {