From: SUTER Frederic Date: Wed, 2 Feb 2022 09:28:14 +0000 (+0100) Subject: add prepare() to some observers X-Git-Tag: v3.31~520 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/e9c73ac1921d00147c2f1f1da71ca78697159d9e add prepare() to some observers --- 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