You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#pragma once
#include <stdio.h>
#include <functional>
#include <list>
#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<void(Context& context)> job, uint32_t period_ms) { this->job = job; this->period_ms = period_ms; } function<void(Context& context)> job; uint32_t period_ms = 0; uint32_t lastcall = 0; uint32_t schedule_times = 0; };
list<PeriodJob*> m_periodJobs;
private: OSDefaultSchduler() {}
public: static OSDefaultSchduler* getInstance();
void initialize(){};
void regPeriodJob(function<void(Context& context)> 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
|