projects
/
babeltrace.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix API: allow packet_seek override
[babeltrace.git]
/
lib
/
iterator.c
diff --git
a/lib/iterator.c
b/lib/iterator.c
index 3a288a06e07ede3efe2893a0762bcac8bbbe67c2..2cb40cbc5b166a4e4884c58f4d52e817a7a7e8a0 100644
(file)
--- a/
lib/iterator.c
+++ b/
lib/iterator.c
@@
-27,6
+27,7
@@
#include <babeltrace/iterator-internal.h>
#include <babeltrace/iterator.h>
#include <babeltrace/prio_heap.h>
#include <babeltrace/iterator-internal.h>
#include <babeltrace/iterator.h>
#include <babeltrace/prio_heap.h>
+#include <babeltrace/ctf/events.h>
#include <inttypes.h>
struct stream_saved_pos {
#include <inttypes.h>
struct stream_saved_pos {
@@
-115,7
+116,8
@@
static int seek_file_stream_by_timestamp(struct ctf_file_stream *cfs,
continue;
stream_pos->cur_index = i;
continue;
stream_pos->cur_index = i;
- stream_pos->move_pos_slow(stream_pos, index->offset, SEEK_SET);
+ stream_pos->packet_seek(&stream_pos->parent,
+ index->offset, SEEK_SET);
while (cfs->parent.timestamp < timestamp) {
ret = stream_read_event(cfs);
if (ret < 0)
while (cfs->parent.timestamp < timestamp) {
ret = stream_read_event(cfs);
if (ret < 0)
@@
-202,12
+204,12
@@
int bt_iter_set_pos(struct bt_iter *iter, const struct bt_iter_pos *iter_pos)
saved_pos->cur_index);
stream_pos->cur_index = saved_pos->cur_index;
saved_pos->cur_index);
stream_pos->cur_index = saved_pos->cur_index;
- stream_pos->
move_pos_slow(stream_pos, index->offse
t,
- SEEK_SET);
+ stream_pos->
packet_seek(&stream_pos->paren
t,
+
index->offset,
SEEK_SET);
/*
* the timestamp needs to be restored after
/*
* the timestamp needs to be restored after
- *
move_pos_slow
, because this function resets
+ *
packet_seek
, because this function resets
* the timestamp to the beginning of the packet
*/
stream->timestamp = saved_pos->current_timestamp;
* the timestamp to the beginning of the packet
*/
stream->timestamp = saved_pos->current_timestamp;
@@
-385,7
+387,8
@@
static int babeltrace_filestream_seek(struct ctf_file_stream *file_stream,
*/
break;
case BT_SEEK_BEGIN:
*/
break;
case BT_SEEK_BEGIN:
- file_stream->pos.move_pos_slow(&file_stream->pos, 0, SEEK_SET);
+ file_stream->pos.packet_seek(&file_stream->pos.parent,
+ 0, SEEK_SET);
ret = stream_read_event(file_stream);
break;
case BT_SEEK_TIME:
ret = stream_read_event(file_stream);
break;
case BT_SEEK_TIME:
@@
-577,27
+580,27
@@
end:
return ret;
}
return ret;
}
-int bt_iter_read_event(struct bt_iter *iter,
- struct ctf_stream **stream,
- struct ctf_stream_event **event)
+struct bt_ctf_event *bt_iter_read_ctf_event(struct bt_iter *iter)
{
struct ctf_file_stream *file_stream;
{
struct ctf_file_stream *file_stream;
-
int ret = 0
;
+
struct bt_ctf_event *ret = &iter->current_ctf_event
;
file_stream = heap_maximum(iter->stream_heap);
if (!file_stream) {
/* end of file for all streams */
file_stream = heap_maximum(iter->stream_heap);
if (!file_stream) {
/* end of file for all streams */
- ret = EOF;
- goto end;
+ goto stop;
}
}
- *stream = &file_stream->parent;
- *event = g_ptr_array_index((*stream)->events_by_id, (*stream)->event_id);
+ ret->stream = &file_stream->parent;
+ ret->event = g_ptr_array_index(ret->stream->events_by_id,
+ ret->stream->event_id);
- if (
(*stream)
->stream_id > iter->callbacks->len)
+ if (
ret->stream
->stream_id > iter->callbacks->len)
goto end;
goto end;
- process_callbacks(iter,
*
stream);
+ process_callbacks(iter,
ret->
stream);
end:
return ret;
end:
return ret;
+stop:
+ return NULL;
}
}
This page took
0.026071 seconds
and
4
git commands to generate.