From 3d93df54d024f49895db6277e873dccd10b5baec Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Sun, 17 Nov 2019 09:16:57 +0100 Subject: The first test (file file-base simmulation) --- src/ufo-roof-buffer.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/ufo-roof-buffer.h (limited to 'src/ufo-roof-buffer.h') diff --git a/src/ufo-roof-buffer.h b/src/ufo-roof-buffer.h new file mode 100644 index 0000000..bb71791 --- /dev/null +++ b/src/ufo-roof-buffer.h @@ -0,0 +1,31 @@ +#ifndef __UFO_ROOF_BUFFER_H +#define __UFO_ROOF_BUUFER_H + +#include + +struct _UfoRoofBuffer { + guint current_id; // The ID of the first (active) dataset in the buffer + + guint ring_size; // Number of datasets to buffer + void *ring_buffer; // The ring buffer + _Atomic int *n_fragments; // Number of completed fragments in each buffer + guint *stream_fragment; // Currently processed fragment in the stream (for ordered streams) +// int *fragments; // Mark individual completed fragments (if we care for partial data) + + + guint dataset_size; // Size (in bytes) of a full dataset + guint fragment_size; // Size (in bytes) of a single fragment (we expect fixed-size fragments at the moment) + + guint fragments_per_dataset; // Number of packets in dataset (used to compute when dataset is ready) + guint fragments_per_stream; // Number of packets in each of data streams (used to compute when dataset is ready) +}; + +typedef struct _UfoRoofBuffer UfoRoofBuffer; + +UfoRoofBuffer *ufo_roof_buffer_new(UfoRoofConfig *cfg, GError **error); +void ufo_roof_buffer_free(UfoRoofBuffer *buf); + +gboolean ufo_roof_buffer_set_fragment(UfoRoofBuffer *buffer, guint stream_id, guint fragment_id, gconstpointer fragment, GError **error); +gboolean ufo_roof_buffer_get_dataset(UfoRoofBuffer *buffer, gpointer output_buffer, GError **error); + +#endif -- cgit v1.2.3