Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
cosmetics
[simgrid.git] / src / surf / host_clm03.cpp
index 2932677..5a48110 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2014. The SimGrid Team.
+/* Copyright (c) 2013-2015. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -8,7 +8,7 @@
 
 #include "cpu_cas01.hpp"
 #include "simgrid/sg_config.h"
-#include "vm_interface.hpp"
+#include "virtual_machine.hpp"
 
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_host);
 
@@ -28,38 +28,23 @@ void surf_host_model_init_current_default(void)
   surf_network_model_init_LegrandVelho();
 
   Model *model = surf_host_model;
-  xbt_dynar_push(model_list, &model);
-  xbt_dynar_push(model_list_invoke, &model);
-  sg_platf_host_add_cb(host_parse_init);
+  xbt_dynar_push(all_existing_models, &model);
 }
 
 void surf_host_model_init_compound()
 {
-
   xbt_assert(surf_cpu_model_pm, "No CPU model defined yet!");
   xbt_assert(surf_network_model, "No network model defined yet!");
-  surf_host_model = new HostCLM03Model();
-
-  Model *model = surf_host_model;
-  xbt_dynar_push(model_list, &model);
-  xbt_dynar_push(model_list_invoke, &model);
-  sg_platf_host_add_cb(host_parse_init);
-}
 
-HostCLM03Model::HostCLM03Model()
- : HostModel("Host CLM03")
-{
+  surf_host_model = new HostCLM03Model();
+  xbt_dynar_push(all_existing_models, &surf_host_model);
 }
 
-HostCLM03Model::~HostCLM03Model()
-{}
-
-Host *HostCLM03Model::createHost(const char *name){
-  sg_host_t sg_host = sg_host_by_name(name);
+Host *HostCLM03Model::createHost(const char *name,RoutingEdge *netElm, Cpu *cpu){
   Host *host = new HostCLM03(surf_host_model, name, NULL,
                  (xbt_dynar_t)xbt_lib_get_or_null(storage_lib, name, ROUTING_STORAGE_HOST_LEVEL),
-                 sg_host_edge(sg_host),
-                 sg_host_surfcpu(sg_host));
+                 netElm, cpu);
+  surf_callback_emit(hostCreatedCallbacks, host);
   XBT_DEBUG("Create host %s with %ld mounted disks", name, xbt_dynar_length(host->p_storage));
   xbt_lib_set(host_lib, name, SURF_HOST_LEVEL, host);
   return host;
@@ -92,7 +77,7 @@ void HostCLM03Model::updateActionsState(double /*now*/, double /*delta*/){
 }
 
 Action *HostCLM03Model::executeParallelTask(int host_nb,
-                                        void **host_list,
+                                        sg_host_t *host_list,
                                         double *flops_amount,
                                         double *bytes_amount,
                                         double rate){
@@ -100,11 +85,12 @@ Action *HostCLM03Model::executeParallelTask(int host_nb,
   Action *action =NULL;
   if ((host_nb == 1)
       && (cost_or_zero(bytes_amount, 0) == 0.0)){
-    action = static_cast<HostCLM03*>(host_list[0])->execute(flops_amount[0]);
+    action = surf_host_execute(host_list[0],flops_amount[0]);
   } else if ((host_nb == 1)
            && (cost_or_zero(flops_amount, 0) == 0.0)) {
-    action = communicate(static_cast<HostCLM03*>(host_list[0]),
-               static_cast<HostCLM03*>(host_list[0]),bytes_amount[0], rate);
+    action = surf_network_model->communicate(sg_host_edge(host_list[0]),
+                                                sg_host_edge(host_list[0]),
+                                                                                        bytes_amount[0], rate);
   } else if ((host_nb == 2)
              && (cost_or_zero(flops_amount, 0) == 0.0)
              && (cost_or_zero(flops_amount, 1) == 0.0)) {
@@ -118,22 +104,17 @@ Action *HostCLM03Model::executeParallelTask(int host_nb,
       }
     }
     if (nb == 1){
-      action = communicate(static_cast<HostCLM03*>(host_list[0]),
-                 static_cast<HostCLM03*>(host_list[1]),value, rate);
+      action = surf_network_model->communicate(sg_host_edge(host_list[0]),
+                                                  sg_host_edge(host_list[1]),
+                                                                                          value, rate);
     }
   } else
-    THROW_UNIMPLEMENTED;      /* This model does not implement parallel tasks */
+    THROW_UNIMPLEMENTED;      /* This model does not implement parallel tasks for more than 2 hosts */
 #undef cost_or_zero
   xbt_free(host_list);
   return action;
 }
 
-Action *HostCLM03Model::communicate(Host *src, Host *dst, double size, double rate){
-  return surf_network_model->communicate(src->p_netElm, dst->p_netElm, size, rate);
-}
-
-
-
 /************
  * Resource *
  ************/