1
#ifndef _FASTWRITER_PRIVATE_H
2
#define _FASTWRITER_PRIVATE_H
4
#define FASTWRITER_DEFAULT_BUFFER_SIZE 134217728 /* 128 MB */
5
#define FASTWRITER_RESERVE_MEMORY 536870912 /* 512 MB */
8
#include "fastwriter.h"
11
fastwriter_flags_t flags;
13
} fastwriter_parameters_t;
16
FASTWRITER_WRITE_FLAGS_DEFAULT = 0,
17
FASTWRITER_WRITE_FLAG_FORCE = 1 /**< Force writting all passed data */
18
} fastwriter_write_flags_t;
21
int (*open)(fastwriter_t *ctx, const char *name, fastwriter_flags_t flags);
22
void (*close)(fastwriter_t *ctx);
23
int (*write)(fastwriter_t *ctx, fastwriter_write_flags_t flags, size_t size, void *data, size_t *written);
27
fastwriter_api_t *api; /**< Writer API */
28
void *ctx; /**< Writer Context */
30
fastwriter_flags_t flags;
33
volatile int err; /**< indicates error reported by the writter backend */
34
volatile int run_flag;
36
pthread_cond_t data_cond; /**< broadcasted when new data arrives */
37
pthread_mutex_t data_cond_mutex;
38
pthread_cond_t space_cond; /**< broadcasted when some space is freed */
39
pthread_mutex_t space_cond_mutex;
42
size_t size; /**< size of the ring buffer in bytes */
43
size_t max_usage; /**< maximal number of bytes used in ring buffer */
44
volatile size_t tail; /**< first unwritten data in the ring buffer */
45
volatile size_t head; /**< last commited data in the ring buffer */
46
size_t pos; /**< last pushed data in the ring buffer */
48
size_t written; /**< number of bytes written */
49
size_t commited; /**< number of bytes commited */
50
size_t chunked; /**< number of bytes chunked */
52
fastwriter_parameters_t params;
55
#endif /* _FASTWRITER_PRIVATE_H */