journalfile.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_JOURNALFILE_H
  3. #define NETDATA_JOURNALFILE_H
  4. #include "rrdengine.h"
  5. /* Forward declarations */
  6. struct rrdengine_instance;
  7. struct rrdengine_worker_config;
  8. struct rrdengine_datafile;
  9. struct rrdengine_journalfile;
  10. #define WALFILE_PREFIX "journalfile-"
  11. #define WALFILE_EXTENSION ".njf"
  12. /* only one event loop is supported for now */
  13. struct rrdengine_journalfile {
  14. uv_file file;
  15. uint64_t pos;
  16. struct rrdengine_datafile *datafile;
  17. };
  18. /* only one event loop is supported for now */
  19. struct transaction_commit_log {
  20. uint64_t transaction_id;
  21. /* outstanding transaction buffer */
  22. void *buf;
  23. unsigned buf_pos;
  24. unsigned buf_size;
  25. };
  26. extern void generate_journalfilepath(struct rrdengine_datafile *datafile, char *str, size_t maxlen);
  27. extern void journalfile_init(struct rrdengine_journalfile *journalfile, struct rrdengine_datafile *datafile);
  28. extern void *wal_get_transaction_buffer(struct rrdengine_worker_config* wc, unsigned size);
  29. extern void wal_flush_transaction_buffer(struct rrdengine_worker_config* wc);
  30. extern int close_journal_file(struct rrdengine_journalfile *journalfile, struct rrdengine_datafile *datafile);
  31. extern int unlink_journal_file(struct rrdengine_journalfile *journalfile);
  32. extern int destroy_journal_file(struct rrdengine_journalfile *journalfile, struct rrdengine_datafile *datafile);
  33. extern int create_journal_file(struct rrdengine_journalfile *journalfile, struct rrdengine_datafile *datafile);
  34. extern int load_journal_file(struct rrdengine_instance *ctx, struct rrdengine_journalfile *journalfile,
  35. struct rrdengine_datafile *datafile);
  36. extern void init_commit_log(struct rrdengine_instance *ctx);
  37. #endif /* NETDATA_JOURNALFILE_H */