Query.h 964 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifndef QUERY_H
  2. #define QUERY_H
  3. #include "ml-private.h"
  4. namespace ml {
  5. class Query {
  6. public:
  7. Query(RRDDIM *RD) : RD(RD) {
  8. Ops = &RD->tiers[0]->query_ops;
  9. }
  10. time_t latestTime() {
  11. return Ops->latest_time(RD->tiers[0]->db_metric_handle);
  12. }
  13. time_t oldestTime() {
  14. return Ops->oldest_time(RD->tiers[0]->db_metric_handle);
  15. }
  16. void init(time_t AfterT, time_t BeforeT) {
  17. Ops->init(RD->tiers[0]->db_metric_handle, &Handle, AfterT, BeforeT, TIER_QUERY_FETCH_SUM);
  18. }
  19. bool isFinished() {
  20. return Ops->is_finished(&Handle);
  21. }
  22. std::pair<time_t, CalculatedNumber> nextMetric() {
  23. STORAGE_POINT sp = Ops->next_metric(&Handle);
  24. return { sp.start_time, sp.sum / sp.count };
  25. }
  26. ~Query() {
  27. Ops->finalize(&Handle);
  28. }
  29. private:
  30. RRDDIM *RD;
  31. struct rrddim_query_ops *Ops;
  32. struct rrddim_query_handle Handle;
  33. };
  34. } // namespace ml
  35. #endif /* QUERY_H */