diff --git a/src/lib/utility/messaging/MessageBase.h b/src/lib/utility/messaging/MessageBase.h index 4b631a41..4b1b991c 100644 --- a/src/lib/utility/messaging/MessageBase.h +++ b/src/lib/utility/messaging/MessageBase.h @@ -8,7 +8,8 @@ class MessageBase { public: MessageBase() - : m_isReplayed(false) + : m_isParallel(false) + , m_isReplayed(false) , m_isReplayCleared(false) , m_sendAsTask(true) , m_keepContent(false) @@ -34,6 +35,16 @@ public: m_sendAsTask = sendAsTask; } + bool isParallel() const + { + return m_isParallel; + } + + void setIsParallel(bool isParallel) + { + m_isParallel = isParallel; + } + bool isReplayed() const { return m_isReplayed; @@ -95,6 +106,8 @@ public: } private: + bool m_isParallel; + bool m_isReplayed; bool m_isReplayCleared; diff --git a/src/lib/utility/messaging/MessageQueue.cpp b/src/lib/utility/messaging/MessageQueue.cpp index 2195d41d..044c9429 100644 --- a/src/lib/utility/messaging/MessageQueue.cpp +++ b/src/lib/utility/messaging/MessageQueue.cpp @@ -8,6 +8,7 @@ #include "utility/messaging/MessageFilter.h" #include "utility/messaging/MessageListenerBase.h" #include "utility/scheduling/TaskGroupParallel.h" +#include "utility/scheduling/TaskGroupSequence.h" #include "utility/scheduling/TaskLambda.h" std::shared_ptr MessageQueue::getInstance() @@ -265,7 +266,15 @@ void MessageQueue::sendMessage(std::shared_ptr message) void MessageQueue::sendMessageAsTask(std::shared_ptr message, bool asNextTask) const { - std::shared_ptr taskGroup = std::make_shared(); + std::shared_ptr taskGroup; + if (message->isParallel()) + { + taskGroup = std::make_shared(); + } + else + { + taskGroup = std::make_shared(); + } { std::lock_guard lock(m_listenersMutex); diff --git a/src/lib/utility/messaging/type/MessageActivateTokens.h b/src/lib/utility/messaging/type/MessageActivateTokens.h index d902831d..3910ab9a 100644 --- a/src/lib/utility/messaging/type/MessageActivateTokens.h +++ b/src/lib/utility/messaging/type/MessageActivateTokens.h @@ -15,6 +15,7 @@ public: , isAggregation(false) , isFromSearch(false) { + setIsParallel(true); setKeepContent(other->keepContent()); }