__func__, __FILE__, __LINE__);
goto error;
}
- BT_PUT(writer_stream);
+
+ ret = ctf_stream_copy_packet_header(writer_component->err,
+ packet, writer_stream);
+ if (ret != 0) {
+ fprintf(writer_component->err, "[error] %s in %s:%d\n",
+ __func__, __FILE__, __LINE__);
+ goto error;
+ }
goto end;
return writer_stream_class;
}
+BT_HIDDEN
+int ctf_stream_copy_packet_header(FILE *err, struct bt_ctf_packet *packet,
+ struct bt_ctf_stream *writer_stream)
+{
+ struct bt_ctf_field *packet_header = NULL, *writer_packet_header = NULL;
+ int ret = 0;
+
+ packet_header = bt_ctf_packet_get_header(packet);
+ if (!packet_header) {
+ goto end;
+ }
+
+ writer_packet_header = bt_ctf_field_copy(packet_header);
+ if (!writer_packet_header) {
+ fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
+ __LINE__);
+ goto error;
+ }
+
+ ret = bt_ctf_stream_set_packet_header(writer_stream,
+ writer_packet_header);
+ if (ret) {
+ fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
+ __LINE__);
+ goto error;
+ }
+
+ goto end;
+
+error:
+ ret = -1;
+end:
+ bt_put(writer_packet_header);
+ bt_put(packet_header);
+ return ret;
+}
+
+BT_HIDDEN
+int ctf_packet_copy_header(FILE *err, struct bt_ctf_packet *packet,
+ struct bt_ctf_packet *writer_packet)
+{
+ struct bt_ctf_field *packet_header = NULL, *writer_packet_header = NULL;
+ int ret = 0;
+
+ packet_header = bt_ctf_packet_get_header(packet);
+ if (!packet_header) {
+ goto end;
+ }
+
+ writer_packet_header = bt_ctf_field_copy(packet_header);
+ if (!writer_packet_header) {
+ fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
+ __LINE__);
+ goto error;
+ }
+
+ ret = bt_ctf_packet_set_header(writer_packet, writer_packet_header);
+ if (ret) {
+ fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
+ __LINE__);
+ goto error;
+ }
+
+ goto end;
+
+error:
+ ret = -1;
+end:
+ bt_put(packet_header);
+ bt_put(writer_packet_header);
+ return ret;
+}
+
BT_HIDDEN
int ctf_stream_copy_packet_context(FILE *err, struct bt_ctf_packet *packet,
struct bt_ctf_stream *writer_stream)
}
}
- header_type = bt_ctf_trace_get_packet_header_type(writer_trace);
+ header_type = bt_ctf_trace_get_packet_header_type(trace);
if (header_type) {
int_ret = bt_ctf_trace_set_packet_header_type(writer_trace, header_type);
BT_PUT(header_type);
struct bt_ctf_field *writer_packet_context,
struct bt_ctf_field_type *writer_packet_context_type);
+
+/*
+ * Copy the packet_header from the packet passed in parameter and assign it
+ * to the writer_stream.
+ *
+ * Returns 0 on success or -1 on error.
+ */
+BT_HIDDEN
+int ctf_stream_copy_packet_header(FILE *err, struct bt_ctf_packet *packet,
+ struct bt_ctf_stream *writer_stream);
+
+/*
+ * Copy the packet_header from the packet passed in parameter and assign it
+ * to the writer_packet.
+ *
+ * Returns 0 on success or -1 on error.
+ */
+BT_HIDDEN
+int ctf_packet_copy_header(FILE *err, struct bt_ctf_packet *packet,
+ struct bt_ctf_packet *writer_packet);
+
/*
* Copy all the field values of the packet context from the packet passed in
* parameter and set it to the writer_stream.
struct debug_info_trace *di_trace)
{
struct bt_ctf_packet *writer_packet;
+ int ret;
writer_packet = bt_ctf_packet_create(writer_stream);
if (!writer_packet) {
fprintf(debug_it->err, "[error] %s in %s:%d\n", __func__,
__FILE__, __LINE__);
- goto end;
+ goto error;
+ }
+
+ ret = ctf_packet_copy_header(debug_it->err, packet, writer_packet);
+ if (ret) {
+ fprintf(debug_it->err, "[error] %s in %s:%d\n", __func__,
+ __FILE__, __LINE__);
+ goto error;
}
- g_hash_table_insert(di_trace->packet_map, (gpointer) packet, writer_packet);
+ g_hash_table_insert(di_trace->packet_map, (gpointer) packet,
+ writer_packet);
+ goto end;
+
+error:
+ BT_PUT(writer_packet);
end:
return writer_packet;
}
struct bt_ctf_stream *stream)
{
struct bt_ctf_packet *writer_packet = NULL;
+ int ret;
writer_packet = bt_ctf_packet_create(stream);
if (!writer_packet) {
fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__,
__FILE__, __LINE__);
- goto end;
+ goto error;
}
- g_hash_table_insert(trim_it->packet_map, (gpointer) packet, writer_packet);
+ ret = ctf_packet_copy_header(trim_it->err, packet, writer_packet);
+ if (ret) {
+ fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__,
+ __FILE__, __LINE__);
+ goto error;
+ }
+
+ g_hash_table_insert(trim_it->packet_map, (gpointer) packet,
+ writer_packet);
+ goto end;
+
+error:
+ BT_PUT(writer_packet);
end:
return writer_packet;
}