Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add GuidedState abstract class; move ActorState management
[simgrid.git] / src / kernel / actor / CommObserver.hpp
index dff6de5ab253bd1457ee22bee8437e69529a4188..77584250bd8cd8c99c2106b779ea249c3e9cbd06 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2019-2022. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2019-2023. The SimGrid Team. All rights reserved.          */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include <string>
 
-namespace simgrid {
-namespace kernel {
-namespace actor {
+namespace simgrid::kernel::actor {
 
-class ActivityTestSimcall : public ResultingSimcall<bool> {
+class ActivityTestSimcall final : public ResultingSimcall<bool> {
   activity::ActivityImpl* const activity_;
 
 public:
@@ -28,9 +26,10 @@ public:
   bool is_visible() const override { return true; }
   activity::ActivityImpl* get_activity() const { return activity_; }
   void serialize(std::stringstream& stream) const override;
+  std::string to_string() const override;
 };
 
-class ActivityTestanySimcall : public ResultingSimcall<ssize_t> {
+class ActivityTestanySimcall final : public ResultingSimcall<ssize_t> {
   const std::vector<activity::ActivityImpl*>& activities_;
   std::vector<int> indexes_; // indexes in activities_ pointing to ready activities (=whose test() is positive)
   int next_value_ = 0;
@@ -40,13 +39,14 @@ public:
   bool is_visible() const override { return true; }
   bool is_enabled() override { return true; /* can return -1 if no activity is ready */ }
   void serialize(std::stringstream& stream) const override;
-  int get_max_consider() override;
+  std::string to_string() const override;
+  int get_max_consider() const override;
   void prepare(int times_considered) override;
   const std::vector<activity::ActivityImpl*>& get_activities() const { return activities_; }
   int get_value() const { return next_value_; }
 };
 
-class ActivityWaitSimcall : public ResultingSimcall<bool> {
+class ActivityWaitSimcall final : public ResultingSimcall<bool> {
   activity::ActivityImpl* activity_;
   const double timeout_;
 
@@ -56,6 +56,7 @@ public:
   {
   }
   void serialize(std::stringstream& stream) const override;
+  std::string to_string() const override;
   bool is_visible() const override { return true; }
   bool is_enabled() override;
   activity::ActivityImpl* get_activity() const { return activity_; }
@@ -63,7 +64,7 @@ public:
   double get_timeout() const { return timeout_; }
 };
 
-class ActivityWaitanySimcall : public ResultingSimcall<ssize_t> {
+class ActivityWaitanySimcall final : public ResultingSimcall<ssize_t> {
   const std::vector<activity::ActivityImpl*>& activities_;
   std::vector<int> indexes_; // indexes in activities_ pointing to ready activities (=whose test() is positive)
   const double timeout_;
@@ -73,15 +74,16 @@ public:
   ActivityWaitanySimcall(ActorImpl* actor, const std::vector<activity::ActivityImpl*>& activities, double timeout);
   bool is_enabled() override;
   void serialize(std::stringstream& stream) const override;
+  std::string to_string() const override;
   bool is_visible() const override { return true; }
   void prepare(int times_considered) override;
-  int get_max_consider() override;
+  int get_max_consider() const override;
   const std::vector<activity::ActivityImpl*>& get_activities() const { return activities_; }
   double get_timeout() const { return timeout_; }
   int get_value() const { return next_value_; }
 };
 
-class CommIsendSimcall : public SimcallObserver {
+class CommIsendSimcall final : public SimcallObserver {
   activity::MailboxImpl* mbox_;
   double payload_size_;
   double rate_;
@@ -89,8 +91,8 @@ class CommIsendSimcall : public SimcallObserver {
   size_t src_buff_size_;
   void* payload_;
   bool detached_;
-  activity::CommImpl* comm_;
-  int tag_;
+  activity::CommImpl* comm_ = {};
+  int tag_                  = {};
 
   std::function<bool(void*, void*, activity::CommImpl*)> match_fun_;
   std::function<void(void*)> clean_fun_; // used to free the synchro in case of problem after a detached send
@@ -118,6 +120,7 @@ public:
   {
   }
   void serialize(std::stringstream& stream) const override;
+  std::string to_string() const override;
   bool is_visible() const override { return true; }
   activity::MailboxImpl* get_mailbox() const { return mbox_; }
   double get_payload_size() const { return payload_size_; }
@@ -134,14 +137,14 @@ public:
   auto const& get_copy_data_fun() const { return copy_data_fun_; }
 };
 
-class CommIrecvSimcall : public SimcallObserver {
+class CommIrecvSimcall final : public SimcallObserver {
   activity::MailboxImpl* mbox_;
   unsigned char* dst_buff_;
   size_t* dst_buff_size_;
   void* payload_;
   double rate_;
-  int tag_;
-  activity::CommImpl* comm_;
+  activity::CommImpl* comm_ = {};
+  int tag_                  = {};
 
   std::function<bool(void*, void*, activity::CommImpl*)> match_fun_;
   std::function<void(activity::CommImpl*, void*, size_t)> copy_data_fun_; // used to copy data if not default one
@@ -162,6 +165,7 @@ public:
   {
   }
   void serialize(std::stringstream& stream) const override;
+  std::string to_string() const override;
   bool is_visible() const override { return true; }
   activity::MailboxImpl* get_mailbox() const { return mbox_; }
   double get_rate() const { return rate_; }
@@ -175,8 +179,6 @@ public:
   auto const& get_copy_data_fun() const { return copy_data_fun_; }
 };
 
-} // namespace actor
-} // namespace kernel
-} // namespace simgrid
+} // namespace simgrid::kernel::actor
 
 #endif