diff options
Diffstat (limited to 'profiling/server/include/timelineDecoder/TimelineDecoder.hpp')
-rw-r--r-- | profiling/server/include/timelineDecoder/TimelineDecoder.hpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/profiling/server/include/timelineDecoder/TimelineDecoder.hpp b/profiling/server/include/timelineDecoder/TimelineDecoder.hpp index ea4b144860..9776ec91f9 100644 --- a/profiling/server/include/timelineDecoder/TimelineDecoder.hpp +++ b/profiling/server/include/timelineDecoder/TimelineDecoder.hpp @@ -6,6 +6,8 @@ #include "ITimelineDecoder.hpp" +#include <mutex> +#include <utility> #include <vector> namespace arm @@ -40,7 +42,11 @@ public: virtual TimelineStatus CreateLabel(const Label &) override; virtual TimelineStatus CreateRelationship(const Relationship &) override; - const Model& GetModel(); + template<class F> + decltype(auto) ApplyToModel(F&& f){ + std::lock_guard<std::mutex> lock(m_ModelMutex); + return f(m_Model); + } TimelineStatus SetEntityCallback(const OnNewEntityCallback); TimelineStatus SetEventClassCallback(const OnNewEventClassCallback); @@ -54,6 +60,7 @@ public: private: Model m_Model; + std::mutex m_ModelMutex; OnNewEntityCallback m_OnNewEntityCallback; OnNewEventClassCallback m_OnNewEventClassCallback; @@ -69,4 +76,4 @@ private: }; } // namespace pipe -} // namespace arm
\ No newline at end of file +} // namespace arm |