Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Make model name constant
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Thu, 25 Mar 2021 01:37:24 +0000 (02:37 +0100)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Thu, 25 Mar 2021 01:37:24 +0000 (02:37 +0100)
28 files changed:
include/simgrid/kernel/resource/Model.hpp
src/kernel/resource/DiskImpl.cpp
src/kernel/resource/DiskImpl.hpp
src/kernel/resource/Model.cpp
src/plugins/vm/VirtualMachineImpl.cpp
src/plugins/vm/VirtualMachineImpl.hpp
src/surf/HostImpl.hpp
src/surf/cpu_cas01.cpp
src/surf/cpu_cas01.hpp
src/surf/cpu_ti.cpp
src/surf/cpu_ti.hpp
src/surf/disk_s19.cpp
src/surf/disk_s19.hpp
src/surf/host_clm03.cpp
src/surf/host_clm03.hpp
src/surf/network_cm02.cpp
src/surf/network_cm02.hpp
src/surf/network_constant.cpp
src/surf/network_constant.hpp
src/surf/network_ib.cpp
src/surf/network_ib.hpp
src/surf/network_interface.hpp
src/surf/network_ns3.cpp
src/surf/network_ns3.hpp
src/surf/network_smpi.cpp
src/surf/network_smpi.hpp
src/surf/ptask_L07.cpp
src/surf/ptask_L07.hpp

index 4f3b471..15257b1 100644 (file)
@@ -28,7 +28,7 @@ public:
                    gets recomputed anyway. In that case, you'd better not try to be cleaver with lazy and go for
                    a simple full update.  */
   };
-  Model()             = default;
+  explicit Model(std::string name);
   Model(const Model&) = delete;
   Model& operator=(const Model&) = delete;
 
@@ -127,8 +127,6 @@ public:
 
   /** @brief Gets the model name */
   std::string get_name() const { return name_; }
-  /** @brief Sets the model name */
-  Model* set_name(const std::string& name);
 
 private:
   UpdateAlgo update_algorithm_ = UpdateAlgo::FULL;
@@ -138,7 +136,7 @@ private:
   Action::StateSet failed_action_set_;   /**< Done with failure */
   Action::StateSet finished_action_set_; /**< Done successful */
   Action::StateSet ignored_action_set_;  /**< not considered (failure detectors?) */
-  std::string name_ = "Unnamed";         /**< Model name */
+  const std::string name_;               /**< Model name */
 
   ActionHeap action_heap_;
 };
index 42676d9..6620621 100644 (file)
@@ -19,7 +19,7 @@ namespace resource {
  * Model *
  *********/
 
-DiskModel::DiskModel()
+DiskModel::DiskModel(std::string name) : Model(name)
 {
   set_maxmin_system(new lmm::System(true /* selective update */));
 }
index 8f80693..4fb041d 100644 (file)
@@ -34,7 +34,7 @@ class DiskAction;
  *********/
 class DiskModel : public Model {
 public:
-  DiskModel();
+  explicit DiskModel(std::string name);
   DiskModel(const DiskModel&) = delete;
   DiskModel& operator=(const DiskModel&) = delete;
 
index e9cf922..4a25208 100644 (file)
@@ -12,6 +12,8 @@ namespace simgrid {
 namespace kernel {
 namespace resource {
 
+Model::Model(std::string name) : maxmin_system_(nullptr), name_(name) {}
+
 Model::~Model() =
     default; // Don't move this declaration to the header, or it will break external projects such as SimGrid-FMI
 
@@ -176,12 +178,6 @@ void Model::update_actions_state_full(double /*now*/, double /*delta*/)
   THROW_UNIMPLEMENTED;
 }
 
-Model* Model::set_name(const std::string& name)
-{
-  name_ = name;
-  return this;
-}
-
 } // namespace resource
 } // namespace kernel
 } // namespace simgrid
index 3ba0c8d..4defc4e 100644 (file)
@@ -19,19 +19,16 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(res_vm, ker_resource, "Virtual Machines, contain
 
 void surf_vm_model_init_HL13(simgrid::kernel::resource::CpuModel* cpu_pm_model)
 {
-  auto vm_model = std::make_shared<simgrid::vm::VMModel>();
-  vm_model->set_name("VM_HL13");
+  auto vm_model = std::make_shared<simgrid::vm::VMModel>("VM_HL13");
 
   simgrid::kernel::EngineImpl::get_instance()->add_model(vm_model, {cpu_pm_model});
   std::shared_ptr<simgrid::kernel::resource::CpuModel> cpu_model_vm;
 
   auto cpu_optim = simgrid::config::get_value<std::string>("cpu/optim");
   if (cpu_optim == "TI") {
-    cpu_model_vm = std::make_shared<simgrid::kernel::resource::CpuTiModel>();
-    cpu_model_vm->set_name("VmCpu_TI");
+    cpu_model_vm = std::make_shared<simgrid::kernel::resource::CpuTiModel>("VmCpu_TI");
   } else {
-    cpu_model_vm = std::make_shared<simgrid::kernel::resource::CpuCas01Model>();
-    cpu_model_vm->set_name("VmCpu_Cas01");
+    cpu_model_vm = std::make_shared<simgrid::kernel::resource::CpuCas01Model>("VmCpu_Cas01");
   }
   simgrid::kernel::EngineImpl::get_instance()->add_model(cpu_model_vm, {cpu_pm_model, vm_model.get()});
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_cpu_vm_model(cpu_model_vm);
@@ -119,7 +116,7 @@ static void remove_active_activity(kernel::activity::ActivityImpl const& act)
   }
 }
 
-VMModel::VMModel()
+VMModel::VMModel(std::string name) : HostModel(name)
 {
   s4u::Host::on_state_change.connect(host_state_change);
   s4u::Exec::on_start.connect(add_active_exec);
index 899922b..b1eda38 100644 (file)
@@ -90,7 +90,7 @@ private:
  */
 class XBT_PRIVATE VMModel : public surf::HostModel {
 public:
-  VMModel();
+  explicit VMModel(std::string name);
 
   double next_occurring_event(double now) override;
   void update_actions_state(double /*now*/, double /*delta*/) override{};
index aaf60f2..722ecda 100644 (file)
@@ -27,6 +27,7 @@ namespace surf {
  */
 class XBT_PRIVATE HostModel : public kernel::resource::Model {
 public:
+  explicit HostModel(std::string name) : Model(name) {}
   virtual kernel::resource::Action* execute_parallel(const std::vector<s4u::Host*>& host_list,
                                                      const double* flops_amount, const double* bytes_amount,
                                                      double rate) = 0;
index b4115db..7c76b55 100644 (file)
@@ -44,8 +44,7 @@ void surf_cpu_model_init_Cas01()
     return;
   }
 
-  auto cpu_model_pm = std::make_shared<simgrid::kernel::resource::CpuCas01Model>();
-  cpu_model_pm->set_name("Cpu_Cas01");
+  auto cpu_model_pm = std::make_shared<simgrid::kernel::resource::CpuCas01Model>("Cpu_Cas01");
   simgrid::kernel::EngineImpl::get_instance()->add_model(cpu_model_pm);
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_cpu_pm_model(cpu_model_pm);
 }
@@ -54,7 +53,7 @@ namespace simgrid {
 namespace kernel {
 namespace resource {
 
-CpuCas01Model::CpuCas01Model()
+CpuCas01Model::CpuCas01Model(std::string name) : CpuModel(name)
 {
   if (config::get_value<std::string>("cpu/optim") == "Lazy")
     set_update_algorithm(Model::UpdateAlgo::LAZY);
index ee4ed16..4a2c0f6 100644 (file)
@@ -27,7 +27,7 @@ class XBT_PRIVATE CpuCas01Action;
 
 class CpuCas01Model : public CpuModel {
 public:
-  CpuCas01Model();
+  explicit CpuCas01Model(std::string name);
   CpuCas01Model(const CpuCas01Model&) = delete;
   CpuCas01Model& operator=(const CpuCas01Model&) = delete;
 
index 03f2377..f030e46 100644 (file)
@@ -270,8 +270,7 @@ int CpuTiProfile::binary_search(const std::vector<double>& array, double a)
 
 void CpuTiModel::create_pm_models()
 {
-  auto cpu_model_pm = std::make_shared<CpuTiModel>();
-  cpu_model_pm->set_name("Cpu_TI");
+  auto cpu_model_pm = std::make_shared<CpuTiModel>("Cpu_TI");
   simgrid::kernel::EngineImpl::get_instance()->add_model(cpu_model_pm);
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_cpu_pm_model(cpu_model_pm);
 }
index 48178a1..7ee7930 100644 (file)
@@ -142,7 +142,7 @@ class CpuTiModel : public CpuModel {
 public:
   static void create_pm_models(); // Make CPU PM model
 
-  CpuTiModel()                  = default;
+  using CpuModel::CpuModel;
   CpuTiModel(const CpuTiModel&) = delete;
   CpuTiModel& operator=(const CpuTiModel&) = delete;
   Cpu* create_cpu(s4u::Host* host, const std::vector<double>& speed_per_pstate) override;
index a59bd44..4899708 100644 (file)
@@ -21,8 +21,7 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(res_disk);
 
 void surf_disk_model_init_default()
 {
-  auto disk_model = std::make_shared<simgrid::kernel::resource::DiskS19Model>();
-  disk_model->set_name("Disk");
+  auto disk_model = std::make_shared<simgrid::kernel::resource::DiskS19Model>("Disk");
   simgrid::kernel::EngineImpl::get_instance()->add_model(disk_model);
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_disk_model(disk_model);
 }
index 63ae718..a6a9ef5 100644 (file)
@@ -28,7 +28,7 @@ class XBT_PRIVATE DiskS19Action;
 
 class DiskS19Model : public DiskModel {
 public:
-  DiskS19Model() = default;
+  using DiskModel::DiskModel;
   DiskImpl* create_disk(const std::string& name, double read_bandwidth, double write_bandwidth) override;
   double next_occurring_event(double now) override;
   void update_actions_state(double now, double delta) override;
index afae2cb..59d813d 100644 (file)
@@ -15,9 +15,8 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(res_host);
 
 void surf_host_model_init_current_default()
 {
-  auto host_model = std::make_shared<simgrid::surf::HostCLM03Model>();
+  auto host_model = std::make_shared<simgrid::surf::HostCLM03Model>("Host_CLM03");
   simgrid::config::set_default<bool>("network/crosstraffic", true);
-  host_model->set_name("Host_CLM03");
   simgrid::kernel::EngineImpl::get_instance()->add_model(host_model);
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_host_model(host_model);
   surf_cpu_model_init_Cas01();
@@ -26,8 +25,7 @@ void surf_host_model_init_current_default()
 
 void surf_host_model_init_compound()
 {
-  auto host_model = std::make_shared<simgrid::surf::HostCLM03Model>();
-  host_model->set_name("Host_CLM03");
+  auto host_model = std::make_shared<simgrid::surf::HostCLM03Model>("Host_CLM03");
   simgrid::kernel::EngineImpl::get_instance()->add_model(host_model);
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_host_model(host_model);
 }
index 42a442b..d1be826 100644 (file)
@@ -17,7 +17,7 @@ namespace surf {
 
 class XBT_PRIVATE HostCLM03Model : public HostModel {
 public:
-  HostCLM03Model() = default;
+  using HostModel::HostModel;
   double next_occurring_event(double now) override;
   void update_actions_state(double now, double delta) override;
   kernel::resource::Action* execute_parallel(const std::vector<s4u::Host*>& host_list, const double* flops_amount,
index 1782ad1..71a75ba 100644 (file)
@@ -39,8 +39,7 @@ double sg_weight_S_parameter = 0.0; /* default value; can be set by model or fro
 /*  } */
 void surf_network_model_init_LegrandVelho()
 {
-  auto net_model = std::make_shared<simgrid::kernel::resource::NetworkCm02Model>();
-  net_model->set_name("Network_LegrandVelho");
+  auto net_model = std::make_shared<simgrid::kernel::resource::NetworkCm02Model>("Network_LegrandVelho");
   simgrid::kernel::EngineImpl::get_instance()->add_model(net_model);
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_network_model(net_model);
 
@@ -66,8 +65,7 @@ void surf_network_model_init_CM02()
   simgrid::config::set_default<double>("network/bandwidth-factor", 1.0);
   simgrid::config::set_default<double>("network/weight-S", 0.0);
 
-  auto net_model = std::make_shared<simgrid::kernel::resource::NetworkCm02Model>();
-  net_model->set_name("Network_CM02");
+  auto net_model = std::make_shared<simgrid::kernel::resource::NetworkCm02Model>("Network_CM02");
   simgrid::kernel::EngineImpl::get_instance()->add_model(net_model);
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_network_model(net_model);
 }
@@ -76,7 +74,7 @@ namespace simgrid {
 namespace kernel {
 namespace resource {
 
-NetworkCm02Model::NetworkCm02Model()
+NetworkCm02Model::NetworkCm02Model(std::string name) : NetworkModel(name)
 {
   if (config::get_value<std::string>("network/optim") == "Lazy")
     set_update_algorithm(Model::UpdateAlgo::LAZY);
index 7911375..82d1480 100644 (file)
@@ -30,7 +30,7 @@ class XBT_PRIVATE NetworkSmpiModel;
 
 class NetworkCm02Model : public NetworkModel {
 public:
-  NetworkCm02Model();
+  explicit NetworkCm02Model(std::string name);
   LinkImpl* create_link(const std::string& name, const std::vector<double>& bandwidths,
                         s4u::Link::SharingPolicy policy) override;
   void update_actions_state_lazy(double now, double delta) override;
index eb73b66..64a2492 100644 (file)
@@ -17,8 +17,7 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(res_network);
  *********/
 void surf_network_model_init_Constant()
 {
-  auto net_model = std::make_shared<simgrid::kernel::resource::NetworkConstantModel>();
-  net_model->set_name("Network_Constant");
+  auto net_model = std::make_shared<simgrid::kernel::resource::NetworkConstantModel>("Network_Constant");
   simgrid::kernel::EngineImpl::get_instance()->add_model(net_model);
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_network_model(net_model);
 }
index 4be06bc..34fcd41 100644 (file)
@@ -16,6 +16,7 @@ namespace resource {
 
 class NetworkConstantModel : public NetworkModel {
 public:
+  NetworkConstantModel(std::string name) : NetworkModel(name) {}
   Action* communicate(s4u::Host* src, s4u::Host* dst, double size, double rate) override;
   double next_occurring_event(double now) override;
   void update_actions_state(double now, double delta) override;
index ee04d5e..e675722 100644 (file)
@@ -69,8 +69,7 @@ static void IB_action_init_callback(simgrid::kernel::resource::NetworkAction& ac
 /*  } */
 void surf_network_model_init_IB()
 {
-  auto net_model = std::make_shared<simgrid::kernel::resource::NetworkIBModel>();
-  net_model->set_name("Network_IB");
+  auto net_model = std::make_shared<simgrid::kernel::resource::NetworkIBModel>("Network_IB");
   simgrid::kernel::EngineImpl::get_instance()->add_model(net_model);
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_network_model(net_model);
 
@@ -84,7 +83,7 @@ namespace simgrid {
 namespace kernel {
 namespace resource {
 
-NetworkIBModel::NetworkIBModel() : NetworkSmpiModel()
+NetworkIBModel::NetworkIBModel(std::string name) : NetworkSmpiModel(name)
 {
   std::string IB_factors_string = config::get_value<std::string>("smpi/IB-penalty-factors");
   std::vector<std::string> radical_elements;
index 007bc0c..0614983 100644 (file)
@@ -45,8 +45,7 @@ class XBT_PRIVATE NetworkIBModel : public NetworkSmpiModel {
   void computeIBfactors(IBNode* root) const;
 
 public:
-  NetworkIBModel();
-  explicit NetworkIBModel(const char* name);
+  explicit NetworkIBModel(std::string name);
   NetworkIBModel(const NetworkIBModel&) = delete;
   NetworkIBModel& operator=(const NetworkIBModel&) = delete;
   void updateIBfactors(NetworkAction* action, IBNode* from, IBNode* to, int remove) const;
index 2e2c350..925db91 100644 (file)
@@ -35,7 +35,7 @@ public:
   static config::Flag<double> cfg_tcp_gamma;
   static config::Flag<bool> cfg_crosstraffic;
 
-  NetworkModel()                    = default;
+  using Model::Model;
   NetworkModel(const NetworkModel&) = delete;
   NetworkModel& operator=(const NetworkModel&) = delete;
   ~NetworkModel() override;
index 153da3e..4a9c40e 100644 (file)
@@ -260,7 +260,7 @@ static void routeCreation_cb(bool symmetrical, simgrid::kernel::routing::NetPoin
  *********/
 void surf_network_model_init_NS3()
 {
-  auto net_model = std::make_shared<simgrid::kernel::resource::NetworkNS3Model>();
+  auto net_model = std::make_shared<simgrid::kernel::resource::NetworkNS3Model>("NS3 network model");
   simgrid::kernel::EngineImpl::get_instance()->add_model(net_model);
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_network_model(net_model);
 }
@@ -289,7 +289,7 @@ namespace simgrid {
 namespace kernel {
 namespace resource {
 
-NetworkNS3Model::NetworkNS3Model()
+NetworkNS3Model::NetworkNS3Model(std::string name) : NetworkModel(name)
 {
   xbt_assert(not sg_link_energy_is_inited(),
              "LinkEnergy plugin and ns-3 network models are not compatible. Are you looking for Ecofen, maybe?");
index 747c474..fee6562 100644 (file)
@@ -16,7 +16,7 @@ namespace resource {
 
 class NetworkNS3Model : public NetworkModel {
 public:
-  NetworkNS3Model();
+  explicit NetworkNS3Model(std::string name);
   LinkImpl* create_link(const std::string& name, const std::vector<double>& bandwidth,
                         s4u::Link::SharingPolicy policy) override;
   Action* communicate(s4u::Host* src, s4u::Host* dst, double size, double rate) override;
index a9b2a04..9a48399 100644 (file)
@@ -35,8 +35,7 @@ std::vector<s_smpi_factor_t> smpi_lat_factor;
 /*  } */
 void surf_network_model_init_SMPI()
 {
-  auto net_model = std::make_shared<simgrid::kernel::resource::NetworkSmpiModel>();
-  net_model->set_name("Network_SMPI");
+  auto net_model = std::make_shared<simgrid::kernel::resource::NetworkSmpiModel>("Network_SMPI");
   simgrid::kernel::EngineImpl::get_instance()->add_model(net_model);
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_network_model(net_model);
 
@@ -47,7 +46,7 @@ namespace simgrid {
 namespace kernel {
 namespace resource {
 
-NetworkSmpiModel::NetworkSmpiModel() : NetworkCm02Model() {}
+NetworkSmpiModel::NetworkSmpiModel(std::string name) : NetworkCm02Model(name) {}
 
 double NetworkSmpiModel::get_bandwidth_factor(double size)
 {
index b5fa658..5e17647 100644 (file)
@@ -17,7 +17,7 @@ namespace resource {
 
 class XBT_PRIVATE NetworkSmpiModel : public NetworkCm02Model {
 public:
-  NetworkSmpiModel();
+  explicit NetworkSmpiModel(std::string name);
 
   double get_latency_factor(double size) override;
   double get_bandwidth_factor(double size) override;
index 64ffdb6..e68f2d7 100644 (file)
@@ -23,8 +23,7 @@ void surf_host_model_init_ptask_L07()
 {
   XBT_CINFO(xbt_cfg, "Switching to the L07 model to handle parallel tasks.");
 
-  auto host_model = std::make_shared<simgrid::surf::HostL07Model>();
-  host_model->set_name("Host_Ptask");
+  auto host_model = std::make_shared<simgrid::surf::HostL07Model>("Host_Ptask");
   simgrid::kernel::EngineImpl::get_instance()->add_model(host_model);
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_host_model(host_model);
 }
@@ -32,24 +31,23 @@ void surf_host_model_init_ptask_L07()
 namespace simgrid {
 namespace surf {
 
-HostL07Model::HostL07Model() : HostModel()
+HostL07Model::HostL07Model(std::string name) : HostModel(name)
 {
   auto* maxmin_system = new simgrid::kernel::lmm::FairBottleneck(true /* selective update */);
   set_maxmin_system(maxmin_system);
 
-  auto net_model = std::make_shared<NetworkL07Model>(this, maxmin_system);
+  auto net_model = std::make_shared<NetworkL07Model>("Network_Ptask", this, maxmin_system);
   auto engine    = simgrid::kernel::EngineImpl::get_instance();
-  net_model->set_name("Network_Ptask");
   engine->add_model(net_model);
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_network_model(net_model);
 
-  auto cpu_model = std::make_shared<CpuL07Model>(this, maxmin_system);
-  cpu_model->set_name("Cpu_Ptask");
+  auto cpu_model = std::make_shared<CpuL07Model>("Cpu_Ptask", this, maxmin_system);
   engine->add_model(cpu_model);
   simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_cpu_pm_model(cpu_model);
 }
 
-CpuL07Model::CpuL07Model(HostL07Model* hmodel, kernel::lmm::System* sys) : hostModel_(hmodel)
+CpuL07Model::CpuL07Model(std::string name, HostL07Model* hmodel, kernel::lmm::System* sys)
+    : CpuModel(name), hostModel_(hmodel)
 {
   set_maxmin_system(sys);
 }
@@ -59,7 +57,8 @@ CpuL07Model::~CpuL07Model()
   set_maxmin_system(nullptr);
 }
 
-NetworkL07Model::NetworkL07Model(HostL07Model* hmodel, kernel::lmm::System* sys) : hostModel_(hmodel)
+NetworkL07Model::NetworkL07Model(std::string name, HostL07Model* hmodel, kernel::lmm::System* sys)
+    : NetworkModel(name), hostModel_(hmodel)
 {
   set_maxmin_system(sys);
   loopback_ = NetworkL07Model::create_link(
index cf70d56..d13f3c9 100644 (file)
@@ -35,7 +35,7 @@ class XBT_PRIVATE L07Action;
  *********/
 class HostL07Model : public HostModel {
 public:
-  HostL07Model();
+  explicit HostL07Model(std::string name);
   HostL07Model(const HostL07Model&) = delete;
   HostL07Model& operator=(const HostL07Model&) = delete;
 
@@ -47,7 +47,7 @@ public:
 
 class CpuL07Model : public kernel::resource::CpuModel {
 public:
-  CpuL07Model(HostL07Model* hmodel, kernel::lmm::System* sys);
+  CpuL07Model(std::string name, HostL07Model* hmodel, kernel::lmm::System* sys);
   CpuL07Model(const CpuL07Model&) = delete;
   CpuL07Model& operator=(const CpuL07Model&) = delete;
   ~CpuL07Model() override;
@@ -63,7 +63,7 @@ public:
 
 class NetworkL07Model : public kernel::resource::NetworkModel {
 public:
-  NetworkL07Model(HostL07Model* hmodel, kernel::lmm::System* sys);
+  NetworkL07Model(std::string name, HostL07Model* hmodel, kernel::lmm::System* sys);
   NetworkL07Model(const NetworkL07Model&) = delete;
   NetworkL07Model& operator=(const NetworkL07Model&) = delete;
   ~NetworkL07Model() override;