7#ifndef RAD_COROACTIVITY_HPP
8#define RAD_COROACTIVITY_HPP
10#define BOOST_COROUTINES_NO_DEPRECATION_WARNING
15#include <boost/asio/io_context.hpp>
16#include <boost/asio/spawn.hpp>
22template <
class T,
class... Args, std::size_t... Is>
24 return std::make_shared<T>(std::get<Is>(t)...);
29template <
class T,
class... Args>
43template <
class CORO,
class... Args>
49 explicit CoroActivity(std::string
const&
id, boost::asio::io_context& io_ctx, Args... args)
60#if BOOST_VERSION >= 108000
61 boost::asio::spawn(m_io_ctx,
62 [&](boost::asio::yield_context yield) { m_coro->operator()(yield); },
63 [](std::exception_ptr e) {
if (e) std::rethrow_exception(e); });
65 boost::asio::spawn(m_io_ctx,
66 [&](boost::asio::yield_context yield) { m_coro->operator()(yield); });
85 boost::asio::io_context& m_io_ctx;
86 std::tuple<Args...> m_args;
87 std::shared_ptr<CORO> m_coro;
void stop(scxml4cpp::Context *c) override
Definition coroActivity.hpp:76
CoroActivity(std::string const &id, boost::asio::io_context &io_ctx, Args... args)
Definition coroActivity.hpp:49
void start(scxml4cpp::Context *c) override
Definition coroActivity.hpp:56
Activity(const std::string &id)
Definition Activity.cpp:37
std::shared_ptr< T > MakeSharedFromTupleImpl(std::tuple< Args... > &t, std::index_sequence< Is... >)
Definition coroActivity.hpp:23
Definition actionsApp.cpp:67
std::shared_ptr< T > MakeSharedFromTuple(std::tuple< Args... > &args)
Definition coroActivity.hpp:30