Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
s4u: allows full single-line initialization
authorBruno Donassolo <bruno.donassolo@inria.fr>
Thu, 8 Apr 2021 14:32:02 +0000 (16:32 +0200)
committerBruno Donassolo <bruno.donassolo@inria.fr>
Thu, 8 Apr 2021 14:32:02 +0000 (16:32 +0200)
seal() returns a pointer to the s4u object.
Allows users to use the object after its seal, without having to do it
in another line

include/simgrid/s4u/Disk.hpp
include/simgrid/s4u/Host.hpp
include/simgrid/s4u/Link.hpp
include/simgrid/s4u/NetZone.hpp
src/s4u/s4u_Disk.cpp
src/s4u/s4u_Host.cpp
src/s4u/s4u_Link.cpp
src/s4u/s4u_Netzone.cpp
src/surf/sg_platf.cpp

index 0d051c8..fa7b009 100644 (file)
@@ -78,7 +78,7 @@ public:
 
   IoPtr write_async(sg_size_t size) const;
   sg_size_t write(sg_size_t size) const;
-  void seal();
+  Disk* seal();
 
 #ifndef DOXYGEN
   kernel::resource::DiskImpl* get_impl() const { return pimpl_; }
index 834944e..eee8596 100644 (file)
@@ -176,7 +176,7 @@ public:
    * @brief Seal this host
    * No more configuration is allowed after the seal
    */
-  void seal();
+  Host* seal();
 
 #ifndef DOXYGEN
   XBT_ATTRIB_DEPRECATED_v331("Please use Comm::sendto()") void sendto(Host* dest, double byte_amount);
index 284f82c..d15da44 100644 (file)
@@ -115,7 +115,7 @@ public:
   void turn_off();
   bool is_on() const;
 
-  void seal();
+  Link* seal();
 
   /* The signals */
   /** @brief Callback signal fired when a new Link is created */
index dd4db0d..045a089 100644 (file)
@@ -136,7 +136,7 @@ public:
   s4u::Link* create_link(const std::string& name, const std::vector<std::string>& bandwidths);
 
   /** @brief Seal this netzone configuration */
-  void seal();
+  NetZone* seal();
 
 private:
   /** @brief Auxiliary function to get list of LinkImpl */
index 07c2012..ab870db 100644 (file)
@@ -99,11 +99,12 @@ sg_size_t Disk::write(sg_size_t size) const
   return IoPtr(io_init(size, Io::OpType::WRITE))->vetoable_start()->wait()->get_performed_ioops();
 }
 
-void Disk::seal()
+Disk* Disk::seal()
 {
   kernel::actor::simcall([this]{ pimpl_->seal(); });
   get_host()->add_disk(this);
   Disk::on_creation(*this);
+  return this;
 }
 } // namespace s4u
 } // namespace simgrid
index c11256d..0d114fd 100644 (file)
@@ -347,10 +347,11 @@ void Host::execute(double flops, double priority) const
   this_actor::exec_init(flops)->set_priority(1 / priority)->vetoable_start()->wait();
 }
 
-void Host::seal()
+Host* Host::seal()
 {
   kernel::actor::simcall([this]() { this->pimpl_->seal(); });
   simgrid::s4u::Host::on_creation(*this); // notify the signal
+  return this;
 }
 
 } // namespace s4u
index 373708b..41a19ab 100644 (file)
@@ -122,9 +122,10 @@ void Link::turn_off()
 {
   kernel::actor::simcall([this]() { this->pimpl_->turn_off(); });
 }
-void Link::seal()
+Link* Link::seal()
 {
   kernel::actor::simcall([this]() { this->pimpl_->seal(); });
+  return this;
 }
 
 bool Link::is_on() const
index dc6f3d4..4f97b64 100644 (file)
@@ -143,9 +143,10 @@ void NetZone::extract_xbt_graph(const s_xbt_graph_t* graph, std::map<std::string
   pimpl_->get_graph(graph, nodes, edges);
 }
 
-void NetZone::seal()
+NetZone* NetZone::seal()
 {
   kernel::actor::simcall([this] { pimpl_->seal(); });
+  return this;
 }
 
 s4u::Host* NetZone::create_host(const std::string& name, const std::vector<double>& speed_per_pstate)
index 6319f16..eef11b5 100644 (file)
@@ -198,8 +198,8 @@ void sg_platf_new_cluster(simgrid::kernel::routing::ClusterCreationArgs* cluster
 
       simgrid::s4u::Link* loopback = current_zone->create_link(loopback_name, std::vector<double>{cluster->loopback_bw})
                                          ->set_sharing_policy(simgrid::s4u::Link::SharingPolicy::FATPIPE)
-                                         ->set_latency(cluster->loopback_lat);
-      loopback->seal();
+                                         ->set_latency(cluster->loopback_lat)
+                                         ->seal();
 
       current_zone->add_private_link_at(current_zone->node_pos(rankId), {loopback->get_impl(), loopback->get_impl()});
     }
@@ -209,8 +209,8 @@ void sg_platf_new_cluster(simgrid::kernel::routing::ClusterCreationArgs* cluster
       std::string limiter_name = std::string(link_id) + "_limiter";
       XBT_DEBUG("<limiter\tid=\"%s\"\tbw=\"%f\"/>", limiter_name.c_str(), cluster->limiter_link);
 
-      simgrid::s4u::Link* limiter = current_zone->create_link(limiter_name, std::vector<double>{cluster->limiter_link});
-      limiter->seal();
+      simgrid::s4u::Link* limiter =
+          current_zone->create_link(limiter_name, std::vector<double>{cluster->limiter_link})->seal();
 
       current_zone->add_private_link_at(current_zone->node_pos_with_loopback(rankId),
                                         {limiter->get_impl(), limiter->get_impl()});
@@ -240,8 +240,8 @@ void sg_platf_new_cluster(simgrid::kernel::routing::ClusterCreationArgs* cluster
 
     simgrid::s4u::Link* backbone = current_zone->create_link(backbone_name, std::vector<double>{cluster->bb_bw})
                                        ->set_sharing_policy(cluster->bb_sharing_policy)
-                                       ->set_latency(cluster->bb_lat);
-    backbone->seal();
+                                       ->set_latency(cluster->bb_lat)
+                                       ->seal();
 
     routing_cluster_add_backbone(backbone->get_impl());
   }