| #ifndef THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HFT_TASK_SCHEDULER_ADAPTER_H_ |
| #define THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HFT_TASK_SCHEDULER_ADAPTER_H_ |
| |
| #include <memory> |
| #include <utility> |
| |
| #include "absl/functional/any_invocable.h" |
| #include "absl/time/time.h" |
| #include "tlbmc/hft/core/scheduler.h" |
| #include "tlbmc/scheduler/scheduler.h" |
| |
| namespace milotic_tlbmc { |
| |
| // Adapts the shared tlbmc TaskScheduler (boost-asio based) to the |
| // dependency-free milotic_hft::Scheduler seam consumed by the HFT |
| // subscription manager core. Owns the wrapped scheduler. |
| class HftTaskSchedulerAdapter : public milotic_hft::Scheduler { |
| public: |
| HftTaskSchedulerAdapter() |
| : task_scheduler_(std::make_unique<TaskScheduler>()) {} |
| |
| int ScheduleAsync(absl::AnyInvocable<void(absl::AnyInvocable<void()>)> task, |
| absl::Duration period) override { |
| return task_scheduler_->ScheduleAsync(std::move(task), period); |
| } |
| |
| void Cancel(int task_id) override { task_scheduler_->Cancel(task_id); } |
| |
| void Stop() override { task_scheduler_->Stop(); } |
| |
| // Debug-only access to the wrapped scheduler, for stats rendering. |
| const TaskScheduler& task_scheduler() const { return *task_scheduler_; } |
| |
| private: |
| std::unique_ptr<TaskScheduler> task_scheduler_; |
| }; |
| |
| } // namespace milotic_tlbmc |
| |
| #endif // THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HFT_TASK_SCHEDULER_ADAPTER_H_ |