X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=formats%2Fctf%2Fir%2Fevent.c;h=d18b1d7a0582750b4c386febca5ed9ea90e6dd68;hb=5c3b707de4e677d874c3978b0280e3f2600a5eef;hp=6d8f57b3e076f7da718e6b1cdd9c87eab80780bb;hpb=f79cf0f0781f10167a01c9d8b925fd116d184c83;p=babeltrace.git diff --git a/formats/ctf/ir/event.c b/formats/ctf/ir/event.c index 6d8f57b3..d18b1d7a 100644 --- a/formats/ctf/ir/event.c +++ b/formats/ctf/ir/event.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -569,6 +570,7 @@ void bt_ctf_event_destroy(struct bt_object *obj) bt_put(event->stream_event_context); bt_put(event->context_payload); bt_put(event->fields_payload); + bt_put(event->packet); g_free(event); } @@ -786,3 +788,38 @@ error: BT_PUT(copy); return copy; } + +int bt_ctf_event_set_packet(struct bt_ctf_event *event, + struct bt_ctf_packet *packet) +{ + struct bt_ctf_stream *stream = NULL; + int ret = 0; + + if (!event || !packet) { + ret = -1; + goto end; + } + + /* + * Make sure the new packet was created by this event's + * stream, if it is set. + */ + stream = bt_ctf_event_get_stream(event); + if (stream) { + if (packet->stream != stream) { + ret = -1; + goto end; + } + } else { + /* Set the event's parent to the packet's stream */ + bt_object_set_parent(event, packet->stream); + } + + bt_put(event->packet); + event->packet = bt_get(packet); + +end: + BT_PUT(stream); + + return ret; +}