From e9c73ac1921d00147c2f1f1da71ca78697159d9e Mon Sep 17 00:00:00 2001 From: SUTER Frederic Date: Wed, 2 Feb 2022 10:28:14 +0100 Subject: [PATCH] add prepare() to some observers --- src/kernel/actor/SimcallObserver.cpp | 10 ++++++++++ src/kernel/actor/SimcallObserver.hpp | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/src/kernel/actor/SimcallObserver.cpp b/src/kernel/actor/SimcallObserver.cpp index b5f3a36d0b..c6b0c69b6a 100644 --- a/src/kernel/actor/SimcallObserver.cpp +++ b/src/kernel/actor/SimcallObserver.cpp @@ -167,6 +167,11 @@ int ActivityTestanySimcall::get_max_consider() const return count; } +void ActivityTestanySimcall::prepare(int times_considered) +{ + next_activity_ = activities_[times_considered]; +} + std::string ActivityTestanySimcall::to_string(int times_considered) const { std::string res = SimcallObserver::to_string(times_considered); @@ -311,6 +316,11 @@ int ActivityWaitanySimcall::get_max_consider() const return count; } +void ActivityWaitanySimcall::prepare(int times_considered) +{ + next_activity_ = activities_[times_considered]; +} + std::string ActivityWaitanySimcall::to_string(int times_considered) const { std::string res = SimcallObserver::to_string(times_considered) + "WaitAny("; diff --git a/src/kernel/actor/SimcallObserver.hpp b/src/kernel/actor/SimcallObserver.hpp index d9a7b7feb2..988075f0b4 100644 --- a/src/kernel/actor/SimcallObserver.hpp +++ b/src/kernel/actor/SimcallObserver.hpp @@ -184,6 +184,7 @@ public: class ActivityTestanySimcall : public ResultingSimcall { const std::vector& activities_; + activity::ActivityImpl* next_activity_; public: ActivityTestanySimcall(ActorImpl* actor, const std::vector& activities) @@ -193,9 +194,11 @@ public: SimcallObserver* clone() override { return new ActivityTestanySimcall(get_issuer(), activities_); } bool is_visible() const override { return true; } int get_max_consider() const override; + void prepare(int times_considered) override; std::string to_string(int times_considered) const override; std::string dot_label(int times_considered) const override; const std::vector& get_activities() const { return activities_; } + activity::ActivityImpl* get_next_activity() const { return next_activity_; } }; class ActivityWaitSimcall : public ResultingSimcall { @@ -219,6 +222,7 @@ public: class ActivityWaitanySimcall : public ResultingSimcall { const std::vector& activities_; + activity::ActivityImpl* next_activity_; const double timeout_; public: @@ -229,11 +233,13 @@ public: SimcallObserver* clone() override { return new ActivityWaitanySimcall(get_issuer(), activities_, timeout_); } bool is_enabled() const override; bool is_visible() const override { return true; } + void prepare(int times_considered) override; int get_max_consider() const override; std::string to_string(int times_considered) const override; std::string dot_label(int times_considered) const override; const std::vector& get_activities() const { return activities_; } double get_timeout() const { return timeout_; } + activity::ActivityImpl* get_next_activity() const { return next_activity_; } }; } // namespace actor -- 2.20.1