25 #ifndef EXE4CPP_ASIO_BASICEXECUTOR_H 26 #define EXE4CPP_ASIO_BASICEXECUTOR_H 28 #include "exe4cpp/IExecutor.h" 29 #include "exe4cpp/asio/AsioTimer.h" 45 public std::enable_shared_from_this<BasicExecutor>
48 BasicExecutor(
const std::shared_ptr<asio::io_service>& io_service) : io_service{io_service}
55 static std::shared_ptr<BasicExecutor> create(
const std::shared_ptr<asio::io_service>& io_service)
57 return std::make_shared<BasicExecutor>(io_service);
62 virtual Timer start(
const duration_t& duration,
const action_t& action)
override 67 virtual Timer start(
const steady_time_t& expiration,
const action_t& action)
override 69 const auto timer = AsioTimer::create(this->io_service);
71 timer->impl.expires_at(expiration);
74 auto callback = [timer, action,
self = shared_from_this()](
const std::error_code & ec)
82 timer->impl.async_wait(callback);
87 virtual void post(
const action_t& action)
override 89 this->io_service->post(action);
94 return std::chrono::steady_clock::now();
98 inline std::shared_ptr<asio::io_service> get_service()
105 const std::shared_ptr<asio::io_service> io_service;
exe4cpp header-only library namespace
virtual void post(const action_t &action) override
virtual Timer start(const duration_t &duration, const action_t &action) override
virtual steady_time_t get_time() override
virtual Timer start(const steady_time_t &expiration, const action_t &action) override