aboutsummaryrefslogtreecommitdiff
path: root/profiling/server/include/timelineDecoder/TimelineDecoder.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'profiling/server/include/timelineDecoder/TimelineDecoder.hpp')
-rw-r--r--profiling/server/include/timelineDecoder/TimelineDecoder.hpp11
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