8 #ifndef SUP_SUBSIM_COMMON_UTILS_IPP_
9 #define SUP_SUBSIM_COMMON_UTILS_IPP_
18 #include <rad/smAdapter.hpp>
19 #include <rad/mal/request.hpp>
20 #include <rad/activity.hpp>
25 template <
class EVENT_DONE,
class EVENT_ERR>
28 const std::string cmd,
29 rad::ThreadActivity* activity) {
33 auto repl_ok = config.
GetReplyOk(cmd).value_or(
true);
36 RAD_LOG_INFO() <<
"Reply msg: " << msg;
38 RAD_LOG_DEBUG() <<
"Reply delay: " << delay;
40 int increment = int(delay/100);
41 RAD_LOG_DEBUG() <<
"Increment: " << increment;
42 while (total < delay) {
43 if (activity->IsStopRequested()) {
44 sm.PostEvent(rad::UniqueEvent(
new EVENT_ERR(cmd +
" has been stopped !" )));
47 std::this_thread::sleep_for(std::chrono::milliseconds(increment));
49 RAD_LOG_DEBUG() <<
"Total Time: " << total <<
" [ms]";
53 sm.PostEvent(rad::UniqueEvent(
new EVENT_DONE));
55 sm.PostEvent(rad::UniqueEvent(
new EVENT_ERR(msg )));
63 #endif // SUP_SUBSIM_COMMON_UTILS_IPP_