22#include <boost/asio/spawn.hpp>
23#include <boost/asio/steady_timer.hpp>
38 boost::asio::steady_timer timer_;
39 std::optional<size_t> maxChildren_;
40 std::atomic_size_t childrenCounter_{0};
50 CoroutineGroup(boost::asio::yield_context yield, std::optional<size_t> maxChildren = std::nullopt);
69 spawn(boost::asio::yield_context yield, std::function<
void(boost::asio::yield_context)> fn);
78 std::optional<std::function<void()>>
89 asyncWait(boost::asio::yield_context yield);
109 onCoroutineCompleted();
CoroutineGroup is a helper class to manage a group of coroutines. It allows to spawn multiple corouti...
Definition CoroutineGroup.hpp:37
bool isFull() const
Check if the group is full.
Definition CoroutineGroup.cpp:85
void asyncWait(boost::asio::yield_context yield)
Wait for all the coroutines in the group to finish.
Definition CoroutineGroup.cpp:69
std::optional< std::function< void()> > registerForeign()
Register a foreign coroutine this group should wait for.
Definition CoroutineGroup.cpp:59
CoroutineGroup(boost::asio::yield_context yield, std::optional< size_t > maxChildren=std::nullopt)
Construct a new Coroutine Group object.
Definition CoroutineGroup.cpp:34
bool spawn(boost::asio::yield_context yield, std::function< void(boost::asio::yield_context)> fn)
Spawn a new coroutine in the group.
Definition CoroutineGroup.cpp:45
~CoroutineGroup()
Destroy the Coroutine Group object.
Definition CoroutineGroup.cpp:39
size_t size() const
Get the number of coroutines in the group.
Definition CoroutineGroup.cpp:79
This namespace contains various utilities.
Definition AccountUtils.hpp:30