38 auto&
module = static_cast<ModuleType&>(*this);
41 std::cout <<
"[" <<
module.config_.name << "] work_loop started on WORK mailbox\n" << std::flush;
43 while (module.running_) {
46 std::cout <<
"[" <<
module.config_.name << "] work_loop: waiting for message...\n" << std::flush;
48 auto visitor = [&module](
auto&& tims_msg) {
50 auto& msg = tims_msg.payload;
51 using MsgType = std::decay_t<
decltype(msg)>;
54 if constexpr (std::is_same_v<MsgType, SubscribeRequestType>) {
55 std::cout <<
"[" <<
module.config_.name << "] Handling SubscribeRequest\n";
56 module.handle_subscribe_request(msg);
57 }
else if constexpr (std::is_same_v<MsgType, SubscribeReplyType>) {
58 std::cout <<
"[" <<
module.config_.name << "] Handling SubscribeReply\n";
59 module.handle_subscribe_reply(msg);
60 }
else if constexpr (std::is_same_v<MsgType, UnsubscribeRequestType>) {
61 std::cout <<
"[" <<
module.config_.name << "] Handling UnsubscribeRequest\n";
62 module.handle_unsubscribe_request(msg);
67 module.work_mailbox().receive_any(visitor);
70 std::cout <<
"[" <<
module.config_.name << "] work_loop ended\n";