Rename ctf_stream_event to ctf_event_definition
[babeltrace.git] / formats / ctf / ctf.c
index 4f14d7a0b8a45a1994e46d355aabb7af0a930734..22a55e64b50c813fa02827a31cf5c322075cd784 100644 (file)
@@ -23,6 +23,8 @@
 #include <babeltrace/ctf/metadata.h>
 #include <babeltrace/babeltrace-internal.h>
 #include <babeltrace/ctf/events-internal.h>
+#include <babeltrace/trace-handle-internal.h>
+#include <babeltrace/context-internal.h>
 #include <babeltrace/uuid.h>
 #include <babeltrace/endian.h>
 #include <inttypes.h>
@@ -41,6 +43,7 @@
 #include "metadata/ctf-parser.h"
 #include "metadata/ctf-ast.h"
 #include "events-private.h"
+#include "memstream.h"
 
 /*
  * We currently simply map a page to read the packet header and packet
@@ -75,6 +78,12 @@ struct trace_descriptor *ctf_open_mmap_trace(
                void (*packet_seek)(struct stream_pos *pos, size_t index,
                        int whence),
                FILE *metadata_fp);
+static
+void ctf_set_context(struct trace_descriptor *descriptor,
+               struct bt_context *ctx);
+static
+void ctf_set_handle(struct trace_descriptor *descriptor,
+               struct bt_trace_handle *handle);
 
 static
 void ctf_close_trace(struct trace_descriptor *descriptor);
@@ -108,6 +117,8 @@ struct format ctf_format = {
        .open_trace = ctf_open_trace,
        .open_mmap_trace = ctf_open_mmap_trace,
        .close_trace = ctf_close_trace,
+       .set_context = ctf_set_context,
+       .set_handle = ctf_set_handle,
 };
 
 /*
@@ -214,8 +225,8 @@ int ctf_read_event(struct stream_pos *ppos, struct ctf_stream *stream)
 {
        struct ctf_stream_pos *pos =
                container_of(ppos, struct ctf_stream_pos, parent);
-       struct ctf_stream_class *stream_class = stream->stream_class;
-       struct ctf_stream_event *event;
+       struct ctf_stream_declaration *stream_class = stream->stream_class;
+       struct ctf_event_definition *event;
        uint64_t id = 0;
        int ret;
 
@@ -326,8 +337,8 @@ error:
 static
 int ctf_write_event(struct stream_pos *pos, struct ctf_stream *stream)
 {
-       struct ctf_stream_class *stream_class = stream->stream_class;
-       struct ctf_stream_event *event;
+       struct ctf_stream_declaration *stream_class = stream->stream_class;
+       struct ctf_event_definition *event;
        uint64_t id;
        int ret;
 
@@ -747,7 +758,7 @@ int ctf_open_trace_metadata_stream_read(struct ctf_trace *td, FILE **fp,
         * because its size includes garbage at the end (after final
         * \0). This is the allocated size, not the actual string size.
         */
-       out = open_memstream(buf, &size);
+       out = babeltrace_open_memstream(buf, &size);
        if (out == NULL) {
                perror("Metadata open_memstream");
                return -errno;
@@ -762,10 +773,16 @@ int ctf_open_trace_metadata_stream_read(struct ctf_trace *td, FILE **fp,
                        break;
                }
        }
-       fclose(out);    /* flush the buffer */
+       /* close to flush the buffer */
+       ret = babeltrace_close_memstream(buf, &size, out);
+       if (ret < 0) {
+               perror("babeltrace_flush_memstream");
+               fclose(in);
+               return -errno;
+       }
        fclose(in);
        /* open for reading */
-       *fp = fmemopen(*buf, strlen(*buf), "rb");
+       *fp = babeltrace_fmemopen(*buf, strlen(*buf), "rb");
        if (!*fp) {
                perror("Metadata fmemopen");
                return -errno;
@@ -881,11 +898,11 @@ end_stream:
 }
 
 static
-struct ctf_stream_event *create_event_definitions(struct ctf_trace *td,
+struct ctf_event_definition *create_event_definitions(struct ctf_trace *td,
                                                  struct ctf_stream *stream,
                                                  struct ctf_event *event)
 {
-       struct ctf_stream_event *stream_event = g_new0(struct ctf_stream_event, 1);
+       struct ctf_event_definition *stream_event = g_new0(struct ctf_event_definition, 1);
 
        if (event->context_decl) {
                struct definition *definition =
@@ -922,7 +939,7 @@ error:
 static
 int create_stream_definitions(struct ctf_trace *td, struct ctf_stream *stream)
 {
-       struct ctf_stream_class *stream_class;
+       struct ctf_stream_declaration *stream_class;
        int ret;
        int i;
 
@@ -971,7 +988,7 @@ int create_stream_definitions(struct ctf_trace *td, struct ctf_stream *stream)
        g_ptr_array_set_size(stream->events_by_id, stream_class->events_by_id->len);
        for (i = 0; i < stream->events_by_id->len; i++) {
                struct ctf_event *event = g_ptr_array_index(stream_class->events_by_id, i);
-               struct ctf_stream_event *stream_event;
+               struct ctf_event_definition *stream_event;
 
                if (!event)
                        continue;
@@ -984,7 +1001,7 @@ int create_stream_definitions(struct ctf_trace *td, struct ctf_stream *stream)
 
 error_event:
        for (i = 0; i < stream->events_by_id->len; i++) {
-               struct ctf_stream_event *stream_event = g_ptr_array_index(stream->events_by_id, i);
+               struct ctf_event_definition *stream_event = g_ptr_array_index(stream->events_by_id, i);
                if (stream_event)
                        g_free(stream_event);
        }
@@ -1004,7 +1021,7 @@ static
 int create_stream_packet_index(struct ctf_trace *td,
                               struct ctf_file_stream *file_stream)
 {
-       struct ctf_stream_class *stream;
+       struct ctf_stream_declaration *stream;
        int len_index;
        struct ctf_stream_pos *pos;
        struct stat filestats;
@@ -1445,7 +1462,7 @@ static
 int prepare_mmap_stream_definition(struct ctf_trace *td,
                struct ctf_file_stream *file_stream)
 {
-       struct ctf_stream_class *stream;
+       struct ctf_stream_declaration *stream;
        uint64_t stream_id = 0;
        int ret;
 
@@ -1584,7 +1601,7 @@ void ctf_close_trace(struct trace_descriptor *tdp)
 
        if (td->streams) {
                for (i = 0; i < td->streams->len; i++) {
-                       struct ctf_stream_class *stream;
+                       struct ctf_stream_declaration *stream;
                        int j;
 
                        stream = g_ptr_array_index(td->streams, i);
@@ -1603,6 +1620,26 @@ void ctf_close_trace(struct trace_descriptor *tdp)
        g_free(td);
 }
 
+static
+void ctf_set_context(struct trace_descriptor *descriptor,
+               struct bt_context *ctx)
+{
+       struct ctf_trace *td = container_of(descriptor, struct ctf_trace,
+                       parent);
+
+       td->ctx = ctx;
+}
+
+static
+void ctf_set_handle(struct trace_descriptor *descriptor,
+               struct bt_trace_handle *handle)
+{
+       struct ctf_trace *td = container_of(descriptor, struct ctf_trace,
+                       parent);
+
+       td->handle = handle;
+}
+
 void __attribute__((constructor)) ctf_init(void)
 {
        int ret;
This page took 0.025305 seconds and 4 git commands to generate.