Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
s4u::Host: moving create_disk impl to HostImpl
authorBruno Donassolo <bruno.donassolo@inria.fr>
Thu, 8 Apr 2021 16:33:03 +0000 (18:33 +0200)
committerBruno Donassolo <bruno.donassolo@inria.fr>
Thu, 8 Apr 2021 16:33:03 +0000 (18:33 +0200)
src/s4u/s4u_Host.cpp
src/surf/HostImpl.cpp
src/surf/HostImpl.hpp

index 0d114fd..44ef6a1 100644 (file)
@@ -312,9 +312,9 @@ std::vector<Disk*> Host::get_disks() const
 
 Disk* Host::create_disk(const std::string& name, double read_bandwidth, double write_bandwidth)
 {
-  auto disk =
-      this->get_netpoint()->get_englobing_zone()->get_disk_model()->create_disk(name, read_bandwidth, write_bandwidth);
-  return disk->set_host(this)->get_iface();
+  return kernel::actor::simcall([this, &name, read_bandwidth, write_bandwidth] {
+    return this->pimpl_->create_disk(name, read_bandwidth, write_bandwidth);
+  });
 }
 
 void Host::add_disk(const Disk* disk)
index 5be123b..7b34661 100644 (file)
@@ -3,6 +3,7 @@
 /* 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 "simgrid/kernel/routing/NetPoint.hpp"
 #include "simgrid/s4u/Engine.hpp"
 #include "simgrid/s4u/Host.hpp"
 #include "src/plugins/vm/VirtualMachineImpl.hpp"
@@ -135,6 +136,13 @@ HostImpl* HostImpl::set_disks(const std::vector<kernel::resource::DiskImpl*>& di
   return this;
 }
 
+s4u::Disk* HostImpl::create_disk(const std::string& name, double read_bandwidth, double write_bandwidth)
+{
+  auto disk = piface_.get_netpoint()->get_englobing_zone()->get_disk_model()->create_disk(name, read_bandwidth,
+                                                                                          write_bandwidth);
+  return disk->set_host(&piface_)->get_iface();
+}
+
 void HostImpl::add_disk(const s4u::Disk* disk)
 {
   disks_.push_back(disk->get_impl());
index 67dd918..1601eca 100644 (file)
@@ -65,6 +65,7 @@ public:
 
   std::vector<s4u::Disk*> get_disks() const;
   HostImpl* set_disks(const std::vector<kernel::resource::DiskImpl*>& disks);
+  s4u::Disk* create_disk(const std::string& name, double read_bandwidth, double write_bandwidth);
   void add_disk(const s4u::Disk* disk);
   void remove_disk(const std::string& disk_name);