Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove sg_platf_*_add_cb, use the signal<T> directly
[simgrid.git] / src / surf / network_cm02.cpp
index a17692f..5163c8c 100644 (file)
@@ -9,6 +9,7 @@
 #include "network_cm02.hpp"
 #include "maxmin_private.hpp"
 #include "simgrid/sg_config.h"
+#include "src/surf/platform.hpp"
 
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_network);
 
@@ -27,8 +28,8 @@ int sg_network_crosstraffic = 0;
 void net_define_callbacks(void)
 {
   /* Figuring out the network links */
-  sg_platf_link_add_cb(netlink_parse_init);
-  sg_platf_postparse_add_cb(net_add_traces);
+  simgrid::surf::on_link.connect(netlink_parse_init);
+  simgrid::surf::on_postparse.connect(net_add_traces);
 }
 
 /*********
@@ -84,13 +85,11 @@ void surf_network_model_init_CM02(void)
     return;
 
   surf_network_model = new simgrid::surf::NetworkCm02Model();
+  xbt_dynar_push(all_existing_models, &surf_network_model);
   net_define_callbacks();
-  simgrid::surf::Model *model = surf_network_model;
-  xbt_dynar_push(all_existing_models, &model);
 
   xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 1.0);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor",
-                            1.0);
+  xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor", 1.0);
   xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 0.0);
 }
 
@@ -110,16 +109,13 @@ void surf_network_model_init_Reno(void)
     return;
 
   surf_network_model = new simgrid::surf::NetworkCm02Model();
+  xbt_dynar_push(all_existing_models, &surf_network_model);
   net_define_callbacks();
-  simgrid::surf::Model *model = surf_network_model;
-  xbt_dynar_push(all_existing_models, &model);
-  lmm_set_default_protocol_function(func_reno_f, func_reno_fp,
-                                    func_reno_fpi);
+  lmm_set_default_protocol_function(func_reno_f, func_reno_fp, func_reno_fpi);
   surf_network_model->f_networkSolve = lagrange_solve;
 
   xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 10.4);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor",
-                            0.92);
+  xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor", 0.92);
   xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 8775);
 }
 
@@ -130,18 +126,14 @@ void surf_network_model_init_Reno2(void)
     return;
 
   surf_network_model = new simgrid::surf::NetworkCm02Model();
+  xbt_dynar_push(all_existing_models, &surf_network_model);
   net_define_callbacks();
-  simgrid::surf::Model *model = surf_network_model;
-  xbt_dynar_push(all_existing_models, &model);
-  lmm_set_default_protocol_function(func_reno2_f, func_reno2_fp,
-                                    func_reno2_fpi);
+  lmm_set_default_protocol_function(func_reno2_f, func_reno2_fp, func_reno2_fpi);
   surf_network_model->f_networkSolve = lagrange_solve;
 
   xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 10.4);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor",
-                            0.92);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S",
-                            8775);
+  xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor", 0.92);
+  xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 8775);
 }
 
 void surf_network_model_init_Vegas(void)
@@ -150,16 +142,13 @@ void surf_network_model_init_Vegas(void)
     return;
 
   surf_network_model = new simgrid::surf::NetworkCm02Model();
+  xbt_dynar_push(all_existing_models, &surf_network_model);
   net_define_callbacks();
-  simgrid::surf::Model *model = surf_network_model;
-  xbt_dynar_push(all_existing_models, &model);
-  lmm_set_default_protocol_function(func_vegas_f, func_vegas_fp,
-                                    func_vegas_fpi);
+  lmm_set_default_protocol_function(func_vegas_f, func_vegas_fp, func_vegas_fpi);
   surf_network_model->f_networkSolve = lagrange_solve;
 
   xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 10.4);
-  xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor",
-                            0.92);
+  xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor", 0.92);
   xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 8775);
 }
 
@@ -193,7 +182,7 @@ NetworkCm02Model::NetworkCm02Model()
 
   routing_model_create(createLink("__loopback__",
                                      498000000, NULL, 0.000015, NULL,
-                                     SURF_RESOURCE_ON, NULL,
+                                     1 /*SURF_RESOURCE_ON*/, NULL,
                                      SURF_LINK_FATPIPE, NULL));
 
   if (p_updateMechanism == UM_LAZY) {
@@ -202,8 +191,6 @@ NetworkCm02Model::NetworkCm02Model()
        p_modifiedSet = new ActionLmmList();
        p_maxminSystem->keep_track = p_modifiedSet;
   }
-
-  m_haveGap = false;
 }
 
 Link* NetworkCm02Model::createLink(const char *name,
@@ -211,7 +198,7 @@ Link* NetworkCm02Model::createLink(const char *name,
                                  tmgr_trace_t bw_trace,
                                  double lat_initial,
                                  tmgr_trace_t lat_trace,
-                                 e_surf_resource_state_t state_initial,
+                                 int initiallyOn,
                                  tmgr_trace_t state_trace,
                                  e_surf_link_sharing_policy_t policy,
                                  xbt_dict_t properties)
@@ -221,7 +208,7 @@ Link* NetworkCm02Model::createLink(const char *name,
              name);
 
   Link* link = new NetworkCm02Link(this, name, properties, p_maxminSystem, sg_bandwidth_factor * bw_initial, history,
-                                            state_initial, state_trace, bw_initial, bw_trace, lat_initial, lat_trace, policy);
+                                            initiallyOn, state_trace, bw_initial, bw_trace, lat_initial, lat_trace, policy);
   Link::onCreation(link);
   return link;
 }
@@ -366,12 +353,12 @@ Action *NetworkCm02Model::communicate(NetCard *src, NetCard *dst,
 
   routing_platf->getRouteAndLatency(src, dst, &route, &latency);
   xbt_assert(!xbt_dynar_is_empty(route) || latency,
-             "You're trying to send data from %s to %s but there is no connection at all between these two hosts.",
+             "You're trying to send data from %s to %s but there is no connecting path between these two hosts.",
              src->getName(), dst->getName());
 
   xbt_dynar_foreach(route, i, _link) {
        link = static_cast<NetworkCm02Link*>(_link);
-    if (link->getState() == SURF_RESOURCE_OFF) {
+    if (link->isOff()) {
       failed = 1;
       break;
     }
@@ -380,7 +367,7 @@ Action *NetworkCm02Model::communicate(NetCard *src, NetCard *dst,
          routing_platf->getRouteAndLatency(dst, src, &back_route, NULL);
     xbt_dynar_foreach(back_route, i, _link) {
       link = static_cast<NetworkCm02Link*>(_link);
-      if (link->getState() == SURF_RESOURCE_OFF) {
+      if (link->isOff()) {
         failed = 1;
         break;
       }
@@ -527,7 +514,7 @@ NetworkCm02Link::NetworkCm02Link(NetworkCm02Model *model, const char *name, xbt_
                                   lmm_system_t system,
                                   double constraint_value,
                                   tmgr_history_t history,
-                                  e_surf_resource_state_t state_init,
+                                  int initiallyOn,
                                   tmgr_trace_t state_trace,
                                   double metric_peak,
                                   tmgr_trace_t metric_trace,
@@ -536,7 +523,10 @@ NetworkCm02Link::NetworkCm02Link(NetworkCm02Model *model, const char *name, xbt_
                                   e_surf_link_sharing_policy_t policy)
 : Link(model, name, props, lmm_constraint_new(system, this, constraint_value), history, state_trace)
 {
-  setState(state_init);
+  if (initiallyOn)
+    turnOn();
+  else
+    turnOff();
 
   p_speed.scale = 1.0;
   p_speed.peak = metric_peak;
@@ -572,13 +562,13 @@ void NetworkCm02Link::updateState(tmgr_trace_event_t event_type,
       p_latEvent = NULL;
   } else if (event_type == p_stateEvent) {
     if (value > 0)
-      setState(SURF_RESOURCE_ON);
+      turnOn();
     else {
       lmm_constraint_t cnst = getConstraint();
       lmm_variable_t var = NULL;
       lmm_element_t elem = NULL;
 
-      setState(SURF_RESOURCE_OFF);
+      turnOff();
       while ((var = lmm_get_var_from_cnst(getModel()->getMaxminSystem(), cnst, &elem))) {
         Action *action = static_cast<Action*>( lmm_variable_id(var) );