#include <stdlib.h>
#include <babeltrace/babeltrace.h>
#include <babeltrace/callbacks-internal.h>
+#include <babeltrace/context.h>
#include <babeltrace/ctf/metadata.h>
#include <babeltrace/iterator-internal.h>
+#include <babeltrace/iterator.h>
#include <babeltrace/prio_heap.h>
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 */
};
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;
* 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;
}
/*
- * 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;
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 */
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;
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;
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)
{