#pragma once #include #include #include #include "sdk/os/zos.hpp" // namespace iflytop { using namespace std; class OSDefaultSchduler { public: class PeriodJob; class Context { friend class OSDefaultSchduler; protected: PeriodJob* periodJob; public: uint32_t getScheduleTimes() { return periodJob->schedule_times; } }; class PeriodJob { public: PeriodJob(function job, uint32_t period_ms) { this->job = job; this->period_ms = period_ms; } function job; uint32_t period_ms = 0; uint32_t lastcall = 0; uint32_t schedule_times = 0; }; list m_periodJobs; private: OSDefaultSchduler() {} public: static OSDefaultSchduler* getInstance(); void initialize(){}; void regPeriodJob(function job, uint32_t period_ms); void loop(); }; // #define ZHAL_CORE_REG(period_ms, job) OSDefaultSchduler::getInstance()->regPeriodJob([this](OSDefaultSchduler::Context& context) { job }, period_ms); } // namespace iflytop