Query.h 878 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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->state->query_ops;
  9. }
  10. time_t latestTime() {
  11. return Ops->latest_time(RD);
  12. }
  13. time_t oldestTime() {
  14. return Ops->oldest_time(RD);
  15. }
  16. void init(time_t AfterT, time_t BeforeT) {
  17. Ops->init(RD, &Handle, AfterT, BeforeT);
  18. }
  19. bool isFinished() {
  20. return Ops->is_finished(&Handle);
  21. }
  22. std::pair<time_t, storage_number> nextMetric() {
  23. time_t CurrT;
  24. storage_number SN = Ops->next_metric(&Handle, &CurrT);
  25. return { CurrT, SN };
  26. }
  27. ~Query() {
  28. Ops->finalize(&Handle);
  29. }
  30. private:
  31. RRDDIM *RD;
  32. struct rrddim_volatile::rrddim_query_ops *Ops;
  33. struct rrddim_query_handle Handle;
  34. };
  35. } // namespace ml
  36. #endif /* QUERY_H */