context.cc 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #include "proto/context/v1/context.pb.h"
  3. #include "libnetdata/libnetdata.h"
  4. #include "schema_wrapper_utils.h"
  5. #include "context.h"
  6. using namespace context::v1;
  7. // ContextsSnapshot
  8. contexts_snapshot_t contexts_snapshot_new(const char *claim_id, const char *node_id, uint64_t version)
  9. {
  10. ContextsSnapshot *ctxs_snap = new ContextsSnapshot;
  11. if (ctxs_snap == NULL)
  12. fatal("Cannot allocate ContextsSnapshot object. OOM");
  13. ctxs_snap->set_claim_id(claim_id);
  14. ctxs_snap->set_node_id(node_id);
  15. ctxs_snap->set_version(version);
  16. return ctxs_snap;
  17. }
  18. void contexts_snapshot_delete(contexts_snapshot_t snapshot)
  19. {
  20. delete (ContextsSnapshot *)snapshot;
  21. }
  22. void contexts_snapshot_set_version(contexts_snapshot_t ctxs_snapshot, uint64_t version)
  23. {
  24. ((ContextsSnapshot *)ctxs_snapshot)->set_version(version);
  25. }
  26. static void fill_ctx_updated(ContextUpdated *ctx, struct context_updated *c_ctx)
  27. {
  28. ctx->set_id(c_ctx->id);
  29. ctx->set_version(c_ctx->version);
  30. ctx->set_first_entry(c_ctx->first_entry);
  31. ctx->set_last_entry(c_ctx->last_entry);
  32. ctx->set_deleted(c_ctx->deleted);
  33. ctx->set_title(c_ctx->title);
  34. ctx->set_priority(c_ctx->priority);
  35. ctx->set_chart_type(c_ctx->chart_type);
  36. ctx->set_units(c_ctx->units);
  37. ctx->set_family(c_ctx->family);
  38. }
  39. void contexts_snapshot_add_ctx_update(contexts_snapshot_t ctxs_snapshot, struct context_updated *ctx_update)
  40. {
  41. ContextsSnapshot *ctxs_snap = (ContextsSnapshot *)ctxs_snapshot;
  42. ContextUpdated *ctx = ctxs_snap->add_contexts();
  43. fill_ctx_updated(ctx, ctx_update);
  44. }
  45. char *contexts_snapshot_2bin(contexts_snapshot_t ctxs_snapshot, size_t *len)
  46. {
  47. ContextsSnapshot *ctxs_snap = (ContextsSnapshot *)ctxs_snapshot;
  48. *len = PROTO_COMPAT_MSG_SIZE_PTR(ctxs_snap);
  49. char *bin = (char*)mallocz(*len);
  50. if (!ctxs_snap->SerializeToArray(bin, *len)) {
  51. freez(bin);
  52. delete ctxs_snap;
  53. return NULL;
  54. }
  55. delete ctxs_snap;
  56. return bin;
  57. }
  58. // ContextsUpdated
  59. contexts_updated_t contexts_updated_new(const char *claim_id, const char *node_id, uint64_t version_hash, uint64_t created_at)
  60. {
  61. ContextsUpdated *ctxs_updated = new ContextsUpdated;
  62. if (ctxs_updated == NULL)
  63. fatal("Cannot allocate ContextsUpdated object. OOM");
  64. ctxs_updated->set_claim_id(claim_id);
  65. ctxs_updated->set_node_id(node_id);
  66. ctxs_updated->set_version_hash(version_hash);
  67. ctxs_updated->set_created_at(created_at);
  68. return ctxs_updated;
  69. }
  70. void contexts_updated_delete(contexts_updated_t ctxs_updated)
  71. {
  72. delete (ContextsUpdated *)ctxs_updated;
  73. }
  74. void contexts_updated_update_version_hash(contexts_updated_t ctxs_updated, uint64_t version_hash)
  75. {
  76. ((ContextsUpdated *)ctxs_updated)->set_version_hash(version_hash);
  77. }
  78. void contexts_updated_add_ctx_update(contexts_updated_t ctxs_updated, struct context_updated *ctx_update)
  79. {
  80. ContextsUpdated *ctxs_update = (ContextsUpdated *)ctxs_updated;
  81. ContextUpdated *ctx = ctxs_update->add_contextupdates();
  82. if (ctx == NULL)
  83. fatal("Cannot allocate ContextUpdated object. OOM");
  84. fill_ctx_updated(ctx, ctx_update);
  85. }
  86. char *contexts_updated_2bin(contexts_updated_t ctxs_updated, size_t *len)
  87. {
  88. ContextsUpdated *ctxs_update = (ContextsUpdated *)ctxs_updated;
  89. *len = PROTO_COMPAT_MSG_SIZE_PTR(ctxs_update);
  90. char *bin = (char*)mallocz(*len);
  91. if (!ctxs_update->SerializeToArray(bin, *len)) {
  92. freez(bin);
  93. delete ctxs_update;
  94. return NULL;
  95. }
  96. delete ctxs_update;
  97. return bin;
  98. }