size_t linebuf_len;
FILE *fp;
bt_message *tmp_event_msg;
+ uint64_t last_clock_value;
enum {
STATE_EMIT_STREAM_BEGINNING,
+ STATE_EMIT_STREAM_ACTIVITY_BEGINNING,
STATE_EMIT_PACKET_BEGINNING,
STATE_EMIT_EVENT,
STATE_EMIT_PACKET_END,
+ STATE_EMIT_STREAM_ACTIVITY_END,
STATE_EMIT_STREAM_END,
STATE_DONE,
} state;
bt_event_class_put_ref(dmesg_comp->event_class);
bt_stream_put_ref(dmesg_comp->stream);
bt_clock_class_put_ref(dmesg_comp->clock_class);
+ bt_trace_class_put_ref(dmesg_comp->trace_class);
g_free(dmesg_comp);
}
goto error;
}
- msg = bt_message_event_create(msg_iter->pc_msg_iter,
- dmesg_comp->event_class, dmesg_comp->packet);
+ if (dmesg_comp->clock_class) {
+ msg = bt_message_event_create_with_default_clock_snapshot(
+ msg_iter->pc_msg_iter,
+ dmesg_comp->event_class, dmesg_comp->packet, ts);
+ msg_iter->last_clock_value = ts;
+ } else {
+ msg = bt_message_event_create(msg_iter->pc_msg_iter,
+ dmesg_comp->event_class, dmesg_comp->packet);
+ }
+
if (!msg) {
BT_LOGE_STR("Cannot create event message.");
goto error;
event = bt_message_event_borrow_event(msg);
BT_ASSERT(event);
-
- if (dmesg_comp->clock_class) {
- bt_event_set_default_clock_snapshot(event, ts);
- }
-
goto end;
error:
if (dmesg_msg_iter->tmp_event_msg ||
dmesg_msg_iter->state == STATE_EMIT_PACKET_END ||
+ dmesg_msg_iter->state == STATE_EMIT_STREAM_ACTIVITY_END ||
dmesg_msg_iter->state == STATE_EMIT_STREAM_END) {
goto handle_state;
}
BT_ASSERT(dmesg_msg_iter->tmp_event_msg);
*msg = bt_message_stream_beginning_create(
dmesg_msg_iter->pc_msg_iter, dmesg_comp->stream);
+ dmesg_msg_iter->state = STATE_EMIT_STREAM_ACTIVITY_BEGINNING;
+ break;
+ case STATE_EMIT_STREAM_ACTIVITY_BEGINNING:
+ BT_ASSERT(dmesg_msg_iter->tmp_event_msg);
+ *msg = bt_message_stream_activity_beginning_create(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->stream);
dmesg_msg_iter->state = STATE_EMIT_PACKET_BEGINNING;
break;
case STATE_EMIT_PACKET_BEGINNING:
BT_ASSERT(dmesg_msg_iter->tmp_event_msg);
- *msg = bt_message_packet_beginning_create(
- dmesg_msg_iter->pc_msg_iter, dmesg_comp->packet);
+
+ if (dmesg_comp->clock_class) {
+ *msg = bt_message_packet_beginning_create_with_default_clock_snapshot(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->packet,
+ dmesg_msg_iter->last_clock_value);
+ } else {
+ *msg = bt_message_packet_beginning_create(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->packet);
+ }
+
dmesg_msg_iter->state = STATE_EMIT_EVENT;
break;
case STATE_EMIT_EVENT:
dmesg_msg_iter->tmp_event_msg = NULL;
break;
case STATE_EMIT_PACKET_END:
- *msg = bt_message_packet_end_create(
- dmesg_msg_iter->pc_msg_iter, dmesg_comp->packet);
+ if (dmesg_comp->clock_class) {
+ *msg = bt_message_packet_end_create_with_default_clock_snapshot(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->packet,
+ dmesg_msg_iter->last_clock_value);
+ } else {
+ *msg = bt_message_packet_end_create(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->packet);
+ }
+
+ dmesg_msg_iter->state = STATE_EMIT_STREAM_ACTIVITY_END;
+ break;
+ case STATE_EMIT_STREAM_ACTIVITY_END:
+ *msg = bt_message_stream_activity_end_create(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->stream);
dmesg_msg_iter->state = STATE_EMIT_STREAM_END;
break;
case STATE_EMIT_STREAM_END: