#pragma once #include "eventia/private/context.hpp" #include "eventia/timer.hpp" namespace roar11 { class ThreadPool; } //namespace roar11 namespace oro { class Api; class OriginsDB; } //namespace oro namespace duck { class TimerBase : public eve::Timer { public: TimerBase ( const eve::Context& ctx, double timeout, roar11::ThreadPool* pool, oro::Api* oro_api, oro::OriginsDB* db ); virtual ~TimerBase() noexcept = default; virtual void on_timer() override; protected: roar11::ThreadPool& pool(); oro::Api& oro_api(); oro::OriginsDB& db(); private: virtual void fetch_data() = 0; roar11::ThreadPool* m_pool; oro::Api* m_oro_api; oro::OriginsDB* m_db; }; } //namespace duck