lib: metadata: transform fast path precond. checks to BT_ASSERT_PRE()
[babeltrace.git] / include / babeltrace / ctf-writer / stream.h
index a878cae63e53834f21d83ea408f4b45597923855..6d36e543bdbd80867e993e5825648a4ed71e4219 100644 (file)
@@ -1,3 +1,6 @@
+#ifndef BABELTRACE_CTF_WRITER_STREAM_H
+#define BABELTRACE_CTF_WRITER_STREAM_H
+
 /*
  * BabelTrace - CTF Writer: Stream
  *
  * http://www.efficios.com/ctf
  */
 
+#include <babeltrace/ctf-ir/event.h>
 #include <babeltrace/ctf-ir/stream.h>
+#include <babeltrace/ctf-writer/stream-class.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * bt_stream_get_discarded_events_count: get the number of discarded
+ * events associated with this stream.
+ *
+ * Note that discarded events are not stored if the stream's packet
+ * context has no "events_discarded" field. An error will be returned
+ * in that case.
+ *
+ * @param stream Stream instance.
+ *
+ * Returns the number of discarded events, a negative value on error.
+ */
+extern int bt_stream_get_discarded_events_count(
+               struct bt_stream *stream, uint64_t *count);
+
+/*
+ * bt_stream_append_discarded_events: increment discarded events count.
+ *
+ * Increase the current packet's discarded event count. Has no effect if the
+ * stream class' packet context has no "events_discarded" field.
+ *
+ * @param stream Stream instance.
+ * @param event_count Number of discarded events to add to the stream's current
+ *     packet.
+ */
+extern void bt_stream_append_discarded_events(struct bt_stream *stream,
+               uint64_t event_count);
+
+/*
+ * bt_stream_append_event: append an event to the stream.
+ *
+ * Append "event" to the stream's current packet. The stream's associated clock
+ * will be sampled during this call. The event shall not be modified after
+ * being appended to a stream. The stream will share the event's ownership by
+ * incrementing its reference count. The current packet is not flushed to disk
+ * until the next call to bt_stream_flush.
+ *
+ * The stream event context will be sampled for every appended event if
+ * a stream event context was defined.
+ *
+ * @param stream Stream instance.
+ * @param event Event instance to append to the stream's current packet.
+ *
+ * Returns 0 on success, a negative value on error.
+ */
+extern int bt_stream_append_event(struct bt_stream *stream,
+               struct bt_event *event);
+
+/*
+ * bt_stream_get_packet_header: get a stream's packet header.
+ *
+ * @param stream Stream instance.
+ *
+ * Returns a field instance on success, NULL on error.
+ */
+extern struct bt_field *bt_stream_get_packet_header(
+               struct bt_stream *stream);
+
+/*
+ * bt_stream_set_packet_header: set a stream's packet header.
+ *
+ * The packet header's type must match the trace's packet header
+ * type.
+ *
+ * @param stream Stream instance.
+ * @param packet_header Packet header instance.
+ *
+ * Returns a field instance on success, NULL on error.
+ */
+extern int bt_stream_set_packet_header(
+               struct bt_stream *stream,
+               struct bt_field *packet_header);
+
+/*
+ * bt_stream_get_packet_context: get a stream's packet context.
+ *
+ * @param stream Stream instance.
+ *
+ * Returns a field instance on success, NULL on error.
+ */
+extern struct bt_field *bt_stream_get_packet_context(
+               struct bt_stream *stream);
+
+/*
+ * bt_stream_set_packet_context: set a stream's packet context.
+ *
+ * The packet context's type must match the stream class' packet
+ * context type.
+ *
+ * @param stream Stream instance.
+ * @param packet_context Packet context field instance.
+ *
+ * Returns a field instance on success, NULL on error.
+ */
+extern int bt_stream_set_packet_context(
+               struct bt_stream *stream,
+               struct bt_field *packet_context);
+
+/*
+ * bt_stream_flush: flush a stream.
+ *
+ * The stream's current packet's events will be flushed, thus closing the
+ * current packet. Events subsequently appended to the stream will be
+ * added to a new packet.
+ *
+ * Flushing will also set the packet context's default attributes if
+ * they remained unset while populating the current packet. These default
+ * attributes, along with their expected types, are detailed in stream-class.h.
+ *
+ * @param stream Stream instance.
+ *
+ * Returns 0 on success, a negative value on error.
+ */
+extern int bt_stream_flush(struct bt_stream *stream);
+
+extern int bt_stream_is_writer(struct bt_stream *stream);
+
+/* Pre-2.0 CTF writer compatibility */
+#define bt_ctf_stream_get_discarded_events_count bt_stream_get_discarded_events_count
+#define bt_ctf_stream_append_discarded_events bt_stream_append_discarded_events
+#define bt_ctf_stream_append_event bt_stream_append_event
+#define bt_ctf_stream_get_packet_context bt_stream_get_packet_context
+#define bt_ctf_stream_flush bt_stream_flush
+
+extern void bt_ctf_stream_get(struct bt_stream *stream);
+extern void bt_ctf_stream_put(struct bt_stream *stream);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* BABELTRACE_CTF_WRITER_STREAM_H */
This page took 0.028542 seconds and 4 git commands to generate.