Batch.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include "Events.h"
  3. #include <string>
  4. #ifdef __cplusplus
  5. namespace Metrics {
  6. extern "C" {
  7. #endif
  8. #ifdef __cplusplus
  9. class Batch {
  10. private:
  11. std::list<Event> _events;
  12. bool _warned = false;
  13. std::string _metrics_uid = nullptr;
  14. const char* _api_key = nullptr;
  15. const char* _url = nullptr;
  16. void build_guid();
  17. void assign_id();
  18. public:
  19. Batch() = default;
  20. void configure(const char* api_key, const char* url) {
  21. _api_key = api_key;
  22. _url = url;
  23. assign_id();
  24. }
  25. Event& add_feature_event();
  26. void add_remove_feature_event(const char* name, bool active);
  27. Event& add_feature_variant_event(const char* const name, const char* const value);
  28. Event& add_event(const char* name) {
  29. _events.emplace_back(name);
  30. return _events.back();
  31. }
  32. bool has_events() const { return !_events.empty(); }
  33. void remove_feature_event(const char* name);
  34. cJSON* to_json();
  35. char* to_json_str();
  36. void push();
  37. };
  38. }
  39. #endif
  40. #ifdef __cplusplus
  41. }
  42. #endif