Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add RoutingEdge wrapper to manage vm not destroy
authorPaul Bédaride <paul.bedaride@gmail.com>
Fri, 31 Jan 2014 15:31:13 +0000 (16:31 +0100)
committerPaul Bédaride <paul.bedaride@gmail.com>
Fri, 31 Jan 2014 15:31:32 +0000 (16:31 +0100)
18 files changed:
buildtools/Cmake/AddTests.cmake
examples/msg/cloud/CMakeLists.txt
src/surf/cpu_cas01.cpp
src/surf/network_cm02.cpp
src/surf/network_constant.cpp
src/surf/surf_c_bindings.cpp
src/surf/surf_interface.cpp
src/surf/surf_routing.cpp
src/surf/surf_routing.hpp
src/surf/surf_routing_cluster.cpp
src/surf/surf_routing_cluster_torus.cpp
src/surf/surf_routing_dijkstra.cpp
src/surf/surf_routing_floyd.cpp
src/surf/surf_routing_full.cpp
src/surf/surf_routing_generic.cpp
src/surf/surf_routing_none.cpp
src/surf/surf_routing_vivaldi.cpp
src/surf/vm_workstation_hl13.cpp

index 8036e0b..1f81839 100644 (file)
@@ -173,6 +173,8 @@ if(NOT enable_memcheck)
 
   ADD_TEST(msg-masterslave-virtual-machines-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/masterslave_virtual_machines.tesh)
 
+  ADD_TEST(msg-cloud-two-tasks-vm-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/cloud/ --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/ --cd ${CMAKE_BINARY_DIR}/examples/msg/cloud/ ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/two_tasks_vm.tesh)
+  
   if(CONTEXT_UCONTEXT)
     ADD_TEST(msg-sendrecv-CLM03-ucontext        ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/sendrecv/sendrecv_CLM03.tesh)
     ADD_TEST(msg-sendrecv-Vegas-ucontext        ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/sendrecv/sendrecv_Vegas.tesh)
@@ -196,6 +198,8 @@ if(NOT enable_memcheck)
     ADD_TEST(msg-masterslave-vivaldi-ucontext   ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh)
 
     ADD_TEST(msg-masterslave-virtual-machines-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/masterslave_virtual_machines.tesh)
+
+    ADD_TEST(msg-cloud-two-tasks-vm-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/cloud/ --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/ --cd ${CMAKE_BINARY_DIR}/examples/msg/cloud/ ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/two_tasks_vm.tesh)
   endif()
 
   if(HAVE_RAWCTX)
@@ -221,6 +225,9 @@ if(NOT enable_memcheck)
     ADD_TEST(msg-masterslave-vivaldi-raw        ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh)
 
     ADD_TEST(msg-masterslave-virtual-machines-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/masterslave_virtual_machines.tesh)
+
+    ADD_TEST(msg-cloud-two-tasks-vm-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/cloud/ --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/ --cd ${CMAKE_BINARY_DIR}/examples/msg/cloud/ ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/two_tasks_vm.tesh)
+
   endif()
 
   ADD_TEST(msg-energy-pstates-thread            ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e1/pstate.tesh)
index 60f12b8..f609e8e 100644 (file)
@@ -8,6 +8,7 @@ add_executable(migrate_vm "migrate_vm.c")
 add_executable(bound "bound.c")
 add_executable(scale "scale.c")
 add_executable(multicore "multicore.c")
+add_executable(two_tasks_vm "two_tasks_vm.c")
 
 ### Add definitions for compile
 target_link_libraries(masterslave_virtual_machines simgrid)
@@ -16,10 +17,13 @@ target_link_libraries(migrate_vm simgrid)
 target_link_libraries(bound simgrid)
 target_link_libraries(scale simgrid)
 target_link_libraries(multicore simgrid)
+target_link_libraries(two_tasks_vm simgrid)
+
 
 set(tesh_files
   ${tesh_files}
   ${CMAKE_CURRENT_SOURCE_DIR}/masterslave_virtual_machines.tesh
+  ${CMAKE_CURRENT_SOURCE_DIR}/two_tasks_vm.tesh
   PARENT_SCOPE
   )
 set(xml_files
@@ -37,6 +41,7 @@ set(examples_src
   ${CMAKE_CURRENT_SOURCE_DIR}/bound.c
   ${CMAKE_CURRENT_SOURCE_DIR}/scale.c
   ${CMAKE_CURRENT_SOURCE_DIR}/multicore.c
+  ${CMAKE_CURRENT_SOURCE_DIR}/two_tasks_vm.c
   PARENT_SCOPE
   )
 set(bin_files
index 8baff8b..20241cb 100644 (file)
@@ -212,7 +212,8 @@ CpuCas01::CpuCas01(CpuCas01ModelPtr model, const char *name, xbt_dynar_t powerPe
 }
 
 CpuCas01::~CpuCas01(){
-  xbt_dynar_free(&p_powerPeakList);
+  if (getModel() == surf_cpu_model_pm)
+    xbt_dynar_free(&p_powerPeakList);
 }
 
 bool CpuCas01::isUsed()
index e34e829..7d27092 100644 (file)
@@ -372,12 +372,12 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
 
   xbt_dynar_t route = xbt_dynar_new(sizeof(RoutingEdgePtr), NULL);
 
-  XBT_IN("(%s,%s,%g,%g)", src->p_name, dst->p_name, size, rate);
+  XBT_IN("(%s,%s,%g,%g)", src->getName(), dst->getName(), size, rate);
 
   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.",
-             src->p_name, dst->p_name);
+             src->getName(), dst->getName());
 
   xbt_dynar_foreach(route, i, _link) {
        link = static_cast<NetworkCm02LinkPtr>(_link);
@@ -434,7 +434,7 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
     link = *static_cast<NetworkCm02LinkPtr *>(xbt_dynar_get_ptr(route, 0));
     gapAppend(size, link, action);
     XBT_DEBUG("Comm %p: %s -> %s gap=%f (lat=%f)",
-              action, src->p_name, dst->p_name, action->m_senderGap,
+              action, src->getName(), dst->getName(), action->m_senderGap,
               action->m_latency);
   }
 
index 60ca4cd..ed5663f 100644 (file)
@@ -75,8 +75,8 @@ void NetworkConstantModel::updateActionsState(double /*now*/, double delta)
 ActionPtr NetworkConstantModel::communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
                                         double size, double rate)
 {
-  char *src_name = src->p_name;
-  char *dst_name = dst->p_name;
+  char *src_name = src->getName();
+  char *dst_name = dst->getName();
 
   XBT_IN("(%s,%s,%g,%g)", src_name, dst_name, size, rate);
   NetworkConstantActionPtr action = new NetworkConstantAction(this, size, sg_latency_factor);
index be22202..de49456 100644 (file)
@@ -25,7 +25,7 @@ static WorkstationVMPtr get_casted_vm_workstation(surf_resource_t resource){
 }
 
 char *surf_routing_edge_name(sg_routing_edge_t edge){
-  return edge->p_name;
+  return edge->getName();
 }
 
 #ifdef CONTEXT_THREADS
index 726e0fd..1860479 100644 (file)
@@ -426,6 +426,17 @@ void surf_exit(void)
 
   sg_config_finalize();
 
+  xbt_dynar_free(&host_that_restart);
+  xbt_dynar_free(&surf_path);
+
+  xbt_lib_free(&host_lib);
+  xbt_lib_free(&link_lib);
+  xbt_lib_free(&as_router_lib);
+  xbt_lib_free(&storage_lib);
+  xbt_lib_free(&storage_type_lib);
+
+  xbt_dict_free(&watched_hosts_lib);
+
   xbt_dynar_foreach(model_list, iter, model)
     delete model;
   xbt_dynar_free(&model_list);
@@ -448,17 +459,6 @@ void surf_exit(void)
   xbt_free(surf_mins);
   surf_mins = NULL;
 
-  xbt_dynar_free(&host_that_restart);
-  xbt_dynar_free(&surf_path);
-
-  xbt_lib_free(&host_lib);
-  xbt_lib_free(&link_lib);
-  xbt_lib_free(&as_router_lib);
-  xbt_lib_free(&storage_lib);
-  xbt_lib_free(&storage_type_lib);
-
-  xbt_dict_free(&watched_hosts_lib);
-
   tmgr_finalize();
   surf_parse_lex_destroy();
   surf_parse_free_callbacks();
index b2e8bdb..8ba9035 100644 (file)
@@ -135,12 +135,12 @@ static void parse_S_host_link(sg_platf_host_link_cbarg_t host)
     current_routing->p_linkUpDownList = xbt_dynar_new(sizeof(s_surf_parsing_link_up_down_t),NULL);
 
   // If dynar is is greater than edge id and if the host_link is already defined
-  if((int)xbt_dynar_length(current_routing->p_linkUpDownList) > info->m_id &&
-      xbt_dynar_get_as(current_routing->p_linkUpDownList, info->m_id, void*))
+  if((int)xbt_dynar_length(current_routing->p_linkUpDownList) > info->getId() &&
+      xbt_dynar_get_as(current_routing->p_linkUpDownList, info->getId(), void*))
     xbt_die("Host_link for '%s' is already defined!",host->id);
 
-  XBT_DEBUG("Push Host_link for host '%s' to position %d", info->p_name, info->m_id);
-  xbt_dynar_set_as(current_routing->p_linkUpDownList, info->m_id, s_surf_parsing_link_up_down_t, link_up_down);
+  XBT_DEBUG("Push Host_link for host '%s' to position %d", info->getName(), info->getId());
+  xbt_dynar_set_as(current_routing->p_linkUpDownList, info->getId(), s_surf_parsing_link_up_down_t, link_up_down);
 }
 
 /**
@@ -153,13 +153,13 @@ static void parse_S_host(sg_platf_host_cbarg_t host)
   xbt_assert(!xbt_lib_get_or_null(host_lib, host->id, ROUTING_HOST_LEVEL),
              "Reading a host, processing unit \"%s\" already exists", host->id);
 
-  RoutingEdgePtr info = new RoutingEdge();
-  info->p_rcComponent = current_routing;
-  info->p_rcType = SURF_NETWORK_ELEMENT_HOST;
-  info->p_name = xbt_strdup(host->id);
-  info->m_id = current_routing->parsePU(info);
+  RoutingEdgePtr info = new RoutingEdgeImpl(xbt_strdup(host->id),
+                                                   -1,
+                                                   SURF_NETWORK_ELEMENT_HOST,
+                                                   current_routing);
+  info->setId(current_routing->parsePU(info));
   xbt_lib_set(host_lib, host->id, ROUTING_HOST_LEVEL, (void *) info);
-  XBT_DEBUG("Having set name '%s' id '%d'", host->id, info->m_id);
+  XBT_DEBUG("Having set name '%s' id '%d'", host->id, info->getId());
 
   if(mount_list){
     xbt_lib_set(storage_lib, host->id, ROUTING_STORAGE_HOST_LEVEL, (void *) mount_list);
@@ -197,13 +197,13 @@ static void parse_S_router(sg_platf_router_cbarg_t router)
              "Reading a router, processing unit \"%s\" already exists",
              router->id);
 
-  RoutingEdgePtr info = new RoutingEdge();
-  info->p_rcComponent = current_routing;
-  info->p_rcType = SURF_NETWORK_ELEMENT_ROUTER;
-  info->p_name = xbt_strdup(router->id);
-  info->m_id = current_routing->parsePU(info);
+  RoutingEdgePtr info = new RoutingEdgeImpl(xbt_strdup(router->id),
+                                            -1,
+                                            SURF_NETWORK_ELEMENT_ROUTER,
+                                            current_routing);
+  info->setId(current_routing->parsePU(info));
   xbt_lib_set(as_router_lib, router->id, ROUTING_ASR_LEVEL, (void *) info);
-  XBT_DEBUG("Having set name '%s' id '%d'", router->id, info->m_id);
+  XBT_DEBUG("Having set name '%s' id '%d'", router->id, info->getId());
 
   if (router->coord && strcmp(router->coord, "")) {
     unsigned int cursor;
@@ -372,14 +372,16 @@ void routing_AS_begin(sg_platf_AS_cbarg_t AS)
   new_as->p_hierarchy = SURF_ROUTING_NULL;
   new_as->p_name = xbt_strdup(AS->id);
 
-  RoutingEdgePtr info = new RoutingEdge();
-
+  RoutingEdgePtr info = new RoutingEdgeImpl(xbt_strdup(new_as->p_name),
+                                            -1,
+                                            SURF_NETWORK_ELEMENT_AS,
+                                            current_routing);
   if (current_routing == NULL && routing_platf->p_root == NULL) {
 
     /* it is the first one */
     new_as->p_routingFather = NULL;
     routing_platf->p_root = new_as;
-    info->m_id = -1;
+    info->setId(-1);
   } else if (current_routing != NULL && routing_platf->p_root != NULL) {
 
     xbt_assert(!xbt_dict_get_or_null
@@ -394,18 +396,14 @@ void routing_AS_begin(sg_platf_AS_cbarg_t AS)
     xbt_dict_set(current_routing->p_routingSons, AS->id,
                  (void *) new_as, NULL);
     /* add to the father element list */
-    info->m_id = current_routing->parseAS(info);
+    info->setId(current_routing->parseAS(info));
   } else {
     THROWF(arg_error, 0, "All defined components must be belong to a AS");
   }
 
-  info->p_rcComponent = new_as->p_routingFather;
-  info->p_rcType = SURF_NETWORK_ELEMENT_AS;
-  info->p_name = xbt_strdup(new_as->p_name);
-
-  xbt_lib_set(as_router_lib, info->p_name, ROUTING_ASR_LEVEL,
+  xbt_lib_set(as_router_lib, info->getName(), ROUTING_ASR_LEVEL,
               (void *) info);
-  XBT_DEBUG("Having set name '%s' id '%d'", new_as->p_name, info->m_id);
+  XBT_DEBUG("Having set name '%s' id '%d'", new_as->p_name, info->getId());
 
   /* set the new current component of the tree */
   current_routing = new_as;
@@ -467,11 +465,11 @@ static void elements_father(sg_routing_edge_t src, sg_routing_edge_t dst,
   /* (1) find the as where the src and dst are located */
   sg_routing_edge_t src_data = src;
   sg_routing_edge_t dst_data = dst;
-  src_as = src_data->p_rcComponent;
-  dst_as = dst_data->p_rcComponent;
+  src_as = src_data->getRcComponent();
+  dst_as = dst_data->getRcComponent();
 #ifndef NDEBUG
-  char* src_name = src_data->p_name;
-  char* dst_name = dst_data->p_name;
+  char* src_name = src_data->getName();
+  char* dst_name = dst_data->getName();
 #endif
 
   xbt_assert(src_as && dst_as,
@@ -529,7 +527,7 @@ static void _get_route_and_latency(RoutingEdgePtr src, RoutingEdgePtr dst,
   memset(&route,0,sizeof(route));
 
   xbt_assert(src && dst, "bad parameters for \"_get_route_latency\" method");
-  XBT_DEBUG("Solve route/latency  \"%s\" to \"%s\"", src->p_name, dst->p_name);
+  XBT_DEBUG("Solve route/latency  \"%s\" to \"%s\"", src->getName(), dst->getName());
 
   /* Find how src and dst are interconnected */
   AsPtr common_father, src_father, dst_father;
@@ -569,7 +567,7 @@ static void _get_route_and_latency(RoutingEdgePtr src, RoutingEdgePtr dst,
                                     &route, latency);
 
   xbt_assert((route.gw_src != NULL) && (route.gw_dst != NULL),
-      "bad gateways for route from \"%s\" to \"%s\"", src->p_name, dst->p_name);
+      "bad gateways for route from \"%s\" to \"%s\"", src->getName(), dst->getName());
 
   sg_routing_edge_t src_gateway_net_elm = route.gw_src;
   sg_routing_edge_t dst_gateway_net_elm = route.gw_dst;
@@ -591,7 +589,7 @@ AS_t surf_platf_get_root(routing_platf_t platf){
 }
 
 e_surf_network_element_type_t surf_routing_edge_get_rc_type(sg_routing_edge_t edge){
-  return edge->p_rcType;
+  return edge->getRcType();
 }
 
 
@@ -612,7 +610,7 @@ e_surf_network_element_type_t surf_routing_edge_get_rc_type(sg_routing_edge_t ed
 void RoutingPlatf::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst,
                                    xbt_dynar_t* route, double *latency)
 {
-  XBT_DEBUG("routing_get_route_and_latency from %s to %s", src->p_name, dst->p_name);
+  XBT_DEBUG("routing_get_route_and_latency from %s to %s", src->getName(), dst->getName());
   if (!*route) {
     xbt_dynar_reset(routing_platf->p_lastRoute);
     *route = routing_platf->p_lastRoute;
@@ -621,7 +619,7 @@ void RoutingPlatf::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst,
   _get_route_and_latency(src, dst, route, latency);
 
   xbt_assert(!latency || *latency >= 0.0,
-             "negative latency on route between \"%s\" and \"%s\"", src->p_name, dst->p_name);
+             "negative latency on route between \"%s\" and \"%s\"", src->getName(), dst->getName());
 }
 
 xbt_dynar_t RoutingPlatf::getOneLinkRoutes(){
@@ -653,7 +651,7 @@ e_surf_network_element_type_t routing_get_network_element_type(const char *name)
 {
   RoutingEdgePtr rc = sg_routing_edge_by_name_or_null(name);
   if (rc)
-    return rc->p_rcType;
+    return rc->getRcType();
 
   return SURF_NETWORK_ELEMENT_NULL;
 }
@@ -1324,7 +1322,7 @@ xbt_dynar_t surf_AS_get_hosts(AsPtr as) {
   xbt_dynar_t res =  xbt_dynar_new(sizeof(xbt_dictelm_t), NULL);
   for (index = 0; index < count; index++) {
      relm = xbt_dynar_get_as(elms, index, RoutingEdgePtr);
-     delm = xbt_lib_get_elm_or_null(host_lib, relm->p_name);
+     delm = xbt_lib_get_elm_or_null(host_lib, relm->getName());
      if (delm!=NULL) {
        xbt_dynar_push(res, &delm);
      }
index e4d93c6..5ec9d9e 100644 (file)
@@ -91,13 +91,47 @@ public:
  */
 struct RoutingEdge {
 public:
-  ~RoutingEdge() { xbt_free(p_name);};
+  virtual ~RoutingEdge(){};
+  virtual int getId()=0;
+  virtual int *getIdPtr()=0;
+  virtual void setId(int id)=0;
+  virtual char *getName()=0;
+  virtual AsPtr getRcComponent()=0;
+  virtual e_surf_network_element_type_t getRcType()=0;
+};
+
+struct RoutingEdgeImpl : public RoutingEdge {
+public:
+  RoutingEdgeImpl(char *name, int id, e_surf_network_element_type_t rcType, AsPtr rcComponent)
+  : p_rcComponent(rcComponent), p_rcType(rcType), m_id(id), p_name(name) {}
+  ~RoutingEdgeImpl() { xbt_free(p_name);};
+
+  int getId() {return m_id;}
+  int *getIdPtr() {return &m_id;}
+  void setId(int id) {m_id = id;}
+  char *getName() {return p_name;}
+  AsPtr getRcComponent() {return p_rcComponent;}
+  e_surf_network_element_type_t getRcType() {return p_rcType;}
+private:
   AsPtr p_rcComponent;
   e_surf_network_element_type_t p_rcType;
   int m_id;
   char *p_name;
 };
 
+struct RoutingEdgeWrapper : public RoutingEdge {
+public:
+  RoutingEdgeWrapper(RoutingEdge *re) : p_re(re){}
+  ~RoutingEdgeWrapper(){}
+  int getId() {return p_re->getId();}
+  int *getIdPtr() {return p_re->getIdPtr();}
+  void setId(int id) {p_re->setId(id);}
+  char *getName() {return p_re->getName();}
+  AsPtr getRcComponent() {return p_re->getRcComponent();}
+  e_surf_network_element_type_t getRcType() {return p_re->getRcType();}
+private:
+  RoutingEdge *p_re;
+};
 
 /** @ingroup SURF_routing_interface
  * @brief Link of lenght 1, alongside with its source and destination. This is mainly usefull in the bindings to gtnets and ns3
index 7da22e6..25cf788 100644 (file)
@@ -33,12 +33,12 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
 {
   s_surf_parsing_link_up_down_t info;
   XBT_VERB("cluster_get_route_and_latency from '%s'[%d] to '%s'[%d]",
-            src->p_name, src->m_id, dst->p_name, dst->m_id);
+            src->getName(), src->getId(), dst->getName(), dst->getId());
 
-  if (src->p_rcType != SURF_NETWORK_ELEMENT_ROUTER) {    // No specific link for router
+  if (src->getRcType() != SURF_NETWORK_ELEMENT_ROUTER) {    // No specific link for router
 
-    if((src->m_id == dst->m_id) && p_has_loopback  ){
-      info = xbt_dynar_get_as(p_linkUpDownList, src->m_id * p_nb_links_per_node, s_surf_parsing_link_up_down_t);
+    if((src->getId() == dst->getId()) && p_has_loopback  ){
+      info = xbt_dynar_get_as(p_linkUpDownList, src->getId() * p_nb_links_per_node, s_surf_parsing_link_up_down_t);
       xbt_dynar_push_as(route->link_list, void *, info.link_up);
       if (lat)
         *lat += static_cast<NetworkLinkPtr>(info.link_up)->getLatency();
@@ -47,11 +47,11 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
 
 
     if (p_has_limiter){          // limiter for sender
-      info = xbt_dynar_get_as(p_linkUpDownList, src->m_id * p_nb_links_per_node + p_has_loopback, s_surf_parsing_link_up_down_t);
+      info = xbt_dynar_get_as(p_linkUpDownList, src->getId() * p_nb_links_per_node + p_has_loopback, s_surf_parsing_link_up_down_t);
       xbt_dynar_push_as(route->link_list, void *, info.link_up);
     }
 
-    info = xbt_dynar_get_as(p_linkUpDownList, src->m_id * p_nb_links_per_node + p_has_loopback + p_has_limiter, s_surf_parsing_link_up_down_t);
+    info = xbt_dynar_get_as(p_linkUpDownList, src->getId() * p_nb_links_per_node + p_has_loopback + p_has_limiter, s_surf_parsing_link_up_down_t);
     if (info.link_up) {         // link up
       xbt_dynar_push_as(route->link_list, void *, info.link_up);
       if (lat)
@@ -66,8 +66,8 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
       *lat += p_backbone->getLatency();
   }
 
-  if (dst->p_rcType != SURF_NETWORK_ELEMENT_ROUTER) {    // No specific link for router
-    info = xbt_dynar_get_as(p_linkUpDownList, dst->m_id * p_nb_links_per_node + p_has_loopback + p_has_limiter, s_surf_parsing_link_up_down_t);
+  if (dst->getRcType() != SURF_NETWORK_ELEMENT_ROUTER) {    // No specific link for router
+    info = xbt_dynar_get_as(p_linkUpDownList, dst->getId() * p_nb_links_per_node + p_has_loopback + p_has_limiter, s_surf_parsing_link_up_down_t);
 
     if (info.link_down) {       // link down
       xbt_dynar_push_as(route->link_list, void *, info.link_down);
@@ -75,7 +75,7 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
         *lat += static_cast<NetworkLinkPtr>(info.link_down)->getLatency();
     }
     if (p_has_limiter){          // limiter for receiver
-        info = xbt_dynar_get_as(p_linkUpDownList, dst->m_id * p_nb_links_per_node + p_has_loopback, s_surf_parsing_link_up_down_t);
+        info = xbt_dynar_get_as(p_linkUpDownList, dst->getId() * p_nb_links_per_node + p_has_loopback, s_surf_parsing_link_up_down_t);
         xbt_dynar_push_as(route->link_list, void *, info.link_up);
     }
   }
@@ -93,7 +93,7 @@ void AsCluster::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges)
   xbt_assert(p_router,"Malformed cluster");
 
   /* create the router */
-  char *link_name = p_router->p_name;
+  char *link_name = p_router->getName();
   routerNode = new_xbt_graph_node(graph, link_name, nodes);
 
   if(p_backbone) {
@@ -106,10 +106,10 @@ void AsCluster::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges)
   for (isrc = 0; isrc < table_size; isrc++) {
     src = xbt_dynar_get_as(p_indexNetworkElm, isrc, RoutingEdgePtr);
 
-    if (src->p_rcType != SURF_NETWORK_ELEMENT_ROUTER) {
-      previous = new_xbt_graph_node(graph, src->p_name, nodes);
+    if (src->getRcType() != SURF_NETWORK_ELEMENT_ROUTER) {
+      previous = new_xbt_graph_node(graph, src->getName(), nodes);
 
-      info = xbt_dynar_get_as(p_linkUpDownList, src->m_id, s_surf_parsing_link_up_down_t);
+      info = xbt_dynar_get_as(p_linkUpDownList, src->getId(), s_surf_parsing_link_up_down_t);
 
       if (info.link_up) {     // link up
 
@@ -170,13 +170,13 @@ void AsCluster::create_links_for_node(sg_platf_cluster_cbarg_t cluster, int id,
 }
 
 int AsCluster::parsePU(RoutingEdgePtr elm) {
-  XBT_DEBUG("Load process unit \"%s\"", elm->p_name);
+  XBT_DEBUG("Load process unit \"%s\"", elm->getName());
   xbt_dynar_push_as(p_indexNetworkElm, RoutingEdgePtr, elm);
   return xbt_dynar_length(p_indexNetworkElm)-1;
 }
 
 int AsCluster::parseAS(RoutingEdgePtr elm) {
-  XBT_DEBUG("Load Autonomous system \"%s\"", elm->p_name);
+  XBT_DEBUG("Load Autonomous system \"%s\"", elm->getName());
   xbt_dynar_push_as(p_indexNetworkElm, RoutingEdgePtr, elm);
   return xbt_dynar_length(p_indexNetworkElm)-1;
 }
index 851fc29..972254c 100644 (file)
@@ -117,13 +117,13 @@ void AsClusterTorus::parse_specific_arguments(sg_platf_cluster_cbarg_t cluster){
 void AsClusterTorus::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf_route_cbarg_t route, double *lat){
 
   XBT_VERB("torus_get_route_and_latency from '%s'[%d] to '%s'[%d]",
-               src->p_name,src->m_id,
-               dst->p_name,dst->m_id);
+               src->getName(), src->getId(),
+               dst->getName(), dst->getId());
 
-     if (dst->p_rcType == SURF_NETWORK_ELEMENT_ROUTER || src->p_rcType == SURF_NETWORK_ELEMENT_ROUTER) return;
+     if (dst->getRcType() == SURF_NETWORK_ELEMENT_ROUTER || src->getRcType() == SURF_NETWORK_ELEMENT_ROUTER) return;
 
-     if((src->m_id == dst->m_id) && p_has_loopback  ){
-       s_surf_parsing_link_up_down_t info = xbt_dynar_get_as(p_linkUpDownList, src->m_id * p_nb_links_per_node, s_surf_parsing_link_up_down_t);
+     if((src->getId() == dst->getId()) && p_has_loopback  ){
+       s_surf_parsing_link_up_down_t info = xbt_dynar_get_as(p_linkUpDownList, src->getId() * p_nb_links_per_node, s_surf_parsing_link_up_down_t);
        xbt_dynar_push_as(route->link_list, void *, info.link_up);
 
        if (lat)
@@ -137,7 +137,7 @@ void AsClusterTorus::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst,
       * TODO Change to dynamic assignment
       */
      unsigned int j, cur_dim, dim_product   = 1;
-     int current_node    = src->m_id;
+     int current_node    = src->getId();
      int unsigned next_node       = 0;
      /**
       * Arrays that hold the coordinates of the current node and
@@ -146,8 +146,8 @@ void AsClusterTorus::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst,
       * into this dimension or not.
       */
      unsigned int* myCoords, *targetCoords;
-     myCoords     = rankId_to_coords(src->m_id, p_dimensions);
-     targetCoords = rankId_to_coords(dst->m_id, p_dimensions);
+     myCoords     = rankId_to_coords(src->getId(), p_dimensions);
+     targetCoords = rankId_to_coords(dst->getId(), p_dimensions);
      /**
       * linkOffset describes the offset where the link
       * we want to use is stored
@@ -155,18 +155,18 @@ void AsClusterTorus::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst,
       * which can only be the case if src->m_id == dst->m_id -- see above
       * for this special case)
       */
-     int nodeOffset = (xbt_dynar_length(p_dimensions)+1)*src->m_id;
+     int nodeOffset = (xbt_dynar_length(p_dimensions)+1)*src->getId();
 
      int linkOffset = nodeOffset;
      bool use_lnk_up          = false; // Is this link of the form "cur -> next" or "next -> cur"?
                                        // false means: next -> cur
-     while (current_node != dst->m_id) {
+     while (current_node != dst->getId()) {
        dim_product = 1; // First, we will route in x-dimension
        for (j = 0; j < xbt_dynar_length(p_dimensions); j++) {
            cur_dim = xbt_dynar_get_as(p_dimensions, j, int);
 
            // current_node/dim_product = position in current dimension
-           if ((current_node/dim_product) % cur_dim != (dst->m_id/dim_product) % cur_dim) {
+           if ((current_node/dim_product) % cur_dim != (dst->getId()/dim_product) % cur_dim) {
 
                if (( targetCoords[j] > myCoords[j] && targetCoords[j] <= myCoords[j]+cur_dim/2) // Is the target node on the right, without the wrap-around?
                    || ( myCoords[j] > cur_dim/2 && (myCoords[j]+cur_dim/2)%cur_dim >= targetCoords[j] )) { // Or do we need to use the wrap around to reach it?
index 64b1ce7..7fb24b1 100644 (file)
@@ -212,11 +212,11 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p
   /* set utils vars */
 
   srcDstCheck(src, dst);
-  int *src_id = &(src->m_id);
-  int *dst_id = &(dst->m_id);
+  int *src_id = src->getIdPtr();
+  int *dst_id = dst->getIdPtr();
 
   if (!src_id || !dst_id)
-    THROWF(arg_error,0,"No route from '%s' to '%s'",src->p_name,dst->p_name);
+    THROWF(arg_error,0,"No route from '%s' to '%s'",src->getName(),dst->getName());
 
   int *pred_arr = NULL;
   int src_node_id = 0;
@@ -248,7 +248,7 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p
     xbt_edge_t edge = xbt_graph_get_edge(p_routeGraph, node_s_v, node_e_v);
 
     if (edge == NULL)
-      THROWF(arg_error, 0, "No route from '%s' to '%s'", src->p_name, dst->p_name);
+      THROWF(arg_error, 0, "No route from '%s' to '%s'", src->getName(), dst->getName());
 
     e_route = (sg_platf_route_cbarg_t) xbt_graph_edge_get_data(edge);
 
@@ -341,7 +341,7 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p
         xbt_graph_get_edge(p_routeGraph, node_pred_v, node_v);
 
     if (edge == NULL)
-      THROWF(arg_error, 0, "No route from '%s' to '%s'", src->p_name, dst->p_name);
+      THROWF(arg_error, 0, "No route from '%s' to '%s'", src->getName(), dst->getName());
 
     prev_gw_src = gw_src;
 
@@ -353,12 +353,12 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p
       first_gw = gw_dst;
 
     if (p_hierarchy == SURF_ROUTING_RECURSIVE && v != dst_node_id
-        && strcmp(gw_dst->p_name, prev_gw_src->p_name)) {
+        && strcmp(gw_dst->getName(), prev_gw_src->getName())) {
       xbt_dynar_t e_route_as_to_as=NULL;
 
       routing_platf->getRouteAndLatency(gw_dst_net_elm, prev_gw_src_net_elm, &e_route_as_to_as, NULL);
       if (edge == NULL)
-        THROWF(arg_error,0,"No route from '%s' to '%s'", src->p_name, dst->p_name);
+        THROWF(arg_error,0,"No route from '%s' to '%s'", src->getName(), dst->getName());
       links = e_route_as_to_as;
       int pos = 0;
       xbt_dynar_foreach(links, cpt, link) {
@@ -472,12 +472,12 @@ void AsDijkstra::parseRoute(sg_platf_route_cbarg_t route)
     XBT_DEBUG("Load Route from \"%s\" to \"%s\"", src, dst);
   else{
     XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", src,
-        route->gw_src->p_name, dst, route->gw_dst->p_name);
+        route->gw_src->getName(), dst, route->gw_dst->getName());
     as_route = 1;
-    if(route->gw_dst->p_rcType == SURF_NETWORK_ELEMENT_NULL)
-      xbt_die("The gw_dst '%s' does not exist!",route->gw_dst->p_name);
-    if(route->gw_src->p_rcType == SURF_NETWORK_ELEMENT_NULL)
-      xbt_die("The gw_src '%s' does not exist!",route->gw_src->p_name);
+    if(route->gw_dst->getRcType() == SURF_NETWORK_ELEMENT_NULL)
+      xbt_die("The gw_dst '%s' does not exist!",route->gw_dst->getName());
+    if(route->gw_src->getRcType() == SURF_NETWORK_ELEMENT_NULL)
+      xbt_die("The gw_src '%s' does not exist!",route->gw_src->getName());
   }
 
   RoutingEdgePtr src_net_elm, dst_net_elm;
@@ -498,7 +498,7 @@ void AsDijkstra::parseRoute(sg_platf_route_cbarg_t route)
     p_routeCache = xbt_dict_new_homogeneous(&route_cache_elem_free);
 
   sg_platf_route_cbarg_t e_route = newExtendedRoute(p_hierarchy, route, 1);
-  newRoute(src_net_elm->m_id, dst_net_elm->m_id, e_route);
+  newRoute(src_net_elm->getId(), dst_net_elm->getId(), e_route);
 
   // Symmetrical YES
   if ( (route->symmetrical == TRUE && as_route == 0)
@@ -509,11 +509,11 @@ void AsDijkstra::parseRoute(sg_platf_route_cbarg_t route)
       XBT_DEBUG("Load Route from \"%s\" to \"%s\"", dst, src);
     else
       XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", dst,
-          route->gw_dst->p_name, src, route->gw_src->p_name);
+          route->gw_dst->getName(), src, route->gw_src->getName());
 
     xbt_dynar_t nodes = xbt_graph_get_nodes(p_routeGraph);
-    xbt_node_t node_s_v = xbt_dynar_get_as(nodes, src_net_elm->m_id, xbt_node_t);
-    xbt_node_t node_e_v = xbt_dynar_get_as(nodes, dst_net_elm->m_id, xbt_node_t);
+    xbt_node_t node_s_v = xbt_dynar_get_as(nodes, src_net_elm->getId(), xbt_node_t);
+    xbt_node_t node_e_v = xbt_dynar_get_as(nodes, dst_net_elm->getId(), xbt_node_t);
     xbt_edge_t edge =
         xbt_graph_get_edge(p_routeGraph, node_e_v, node_s_v);
 
@@ -527,7 +527,7 @@ void AsDijkstra::parseRoute(sg_platf_route_cbarg_t route)
       route->gw_dst = gw_tmp;
     }
     sg_platf_route_cbarg_t link_route_back = newExtendedRoute(p_hierarchy, route, 0);
-    newRoute(dst_net_elm->m_id, src_net_elm->m_id, link_route_back);
+    newRoute(dst_net_elm->getId(), src_net_elm->getId(), link_route_back);
   }
   xbt_dynar_free(&route->link_list);
 }
index a1d5287..8b7980c 100644 (file)
@@ -90,14 +90,14 @@ void AsFloyd::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_plat
   /* create a result route */
   xbt_dynar_t route_stack = xbt_dynar_new(sizeof(sg_platf_route_cbarg_t), NULL);
   int pred;
-  int cur = dst->m_id;
+  int cur = dst->getId();
   do {
-    pred = TO_FLOYD_PRED(src->m_id, cur);
+    pred = TO_FLOYD_PRED(src->getId(), cur);
     if (pred == -1)
-      THROWF(arg_error, 0, "No route from '%s' to '%s'", src->p_name, dst->p_name);
+      THROWF(arg_error, 0, "No route from '%s' to '%s'", src->getName(), dst->getName());
     xbt_dynar_push_as(route_stack, sg_platf_route_cbarg_t, TO_FLOYD_LINK(pred, cur));
     cur = pred;
-  } while (cur != src->m_id);
+  } while (cur != src->getId());
 
   if (p_hierarchy == SURF_ROUTING_RECURSIVE) {
     res->gw_src = xbt_dynar_getlast_as(route_stack, sg_platf_route_cbarg_t)->gw_src;
@@ -112,7 +112,7 @@ void AsFloyd::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_plat
     unsigned int cpt;
 
     if (p_hierarchy == SURF_ROUTING_RECURSIVE && prev_dst_gw != NULL
-        && strcmp(prev_dst_gw->p_name, e_route->gw_src->p_name)) {
+        && strcmp(prev_dst_gw->getName(), e_route->gw_src->getName())) {
       routing_get_route_and_latency(prev_dst_gw, e_route->gw_src,
                                     &res->link_list, lat);
     }
@@ -175,14 +175,14 @@ void AsFloyd::parseRoute(sg_platf_route_cbarg_t route)
   else{
     as_route = 1;
     XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", src,
-        route->gw_src->p_name, dst, route->gw_dst->p_name);
-    if(route->gw_dst->p_rcType == SURF_NETWORK_ELEMENT_NULL)
-      xbt_die("The dst_gateway '%s' does not exist!",route->gw_dst->p_name);
-    if(route->gw_src->p_rcType == SURF_NETWORK_ELEMENT_NULL)
-      xbt_die("The src_gateway '%s' does not exist!",route->gw_src->p_name);
+        route->gw_src->getName(), dst, route->gw_dst->getName());
+    if(route->gw_dst->getRcType() == SURF_NETWORK_ELEMENT_NULL)
+      xbt_die("The dst_gateway '%s' does not exist!",route->gw_dst->getName());
+    if(route->gw_src->getRcType() == SURF_NETWORK_ELEMENT_NULL)
+      xbt_die("The src_gateway '%s' does not exist!",route->gw_src->getName());
   }
 
-  if(TO_FLOYD_LINK(src_net_elm->m_id, dst_net_elm->m_id))
+  if(TO_FLOYD_LINK(src_net_elm->getId(), dst_net_elm->getId()))
   {
 
     char * link_name;
@@ -195,31 +195,31 @@ void AsFloyd::parseRoute(sg_platf_route_cbarg_t route)
       xbt_dynar_push(link_route_to_test,&link);
     }
     xbt_assert(!xbt_dynar_compare(
-        TO_FLOYD_LINK(src_net_elm->m_id, dst_net_elm->m_id)->link_list,
+        TO_FLOYD_LINK(src_net_elm->getId(), dst_net_elm->getId())->link_list,
         link_route_to_test,
         (int_f_cpvoid_cpvoid_t) floyd_pointer_resource_cmp),
         "The route between \"%s\" and \"%s\" already exists", src,dst);
   }
   else
   {
-    TO_FLOYD_LINK(src_net_elm->m_id, dst_net_elm->m_id) =
+    TO_FLOYD_LINK(src_net_elm->getId(), dst_net_elm->getId()) =
         newExtendedRoute(p_hierarchy, route, 1);
-    TO_FLOYD_PRED(src_net_elm->m_id, dst_net_elm->m_id) = src_net_elm->m_id;
-    TO_FLOYD_COST(src_net_elm->m_id, dst_net_elm->m_id) =
-        ((TO_FLOYD_LINK(src_net_elm->m_id, dst_net_elm->m_id))->link_list)->used;   /* count of links, old model assume 1 */
+    TO_FLOYD_PRED(src_net_elm->getId(), dst_net_elm->getId()) = src_net_elm->getId();
+    TO_FLOYD_COST(src_net_elm->getId(), dst_net_elm->getId()) =
+        ((TO_FLOYD_LINK(src_net_elm->getId(), dst_net_elm->getId()))->link_list)->used;   /* count of links, old model assume 1 */
   }
 
   if ( (route->symmetrical == TRUE && as_route == 0)
       || (route->symmetrical == TRUE && as_route == 1)
   )
   {
-    if(TO_FLOYD_LINK(dst_net_elm->m_id, src_net_elm->m_id))
+    if(TO_FLOYD_LINK(dst_net_elm->getId(), src_net_elm->getId()))
     {
       if(!route->gw_dst && !route->gw_src)
         XBT_DEBUG("See Route from \"%s\" to \"%s\"", dst, src);
       else
         XBT_DEBUG("See ASroute from \"%s(%s)\" to \"%s(%s)\"", dst,
-            route->gw_src->p_name, src, route->gw_dst->p_name);
+            route->gw_src->getName(), src, route->gw_dst->getName());
       char * link_name;
       unsigned int i;
       xbt_dynar_t link_route_to_test = xbt_dynar_new(sizeof(sg_routing_link_t), NULL);
@@ -231,7 +231,7 @@ void AsFloyd::parseRoute(sg_platf_route_cbarg_t route)
         xbt_dynar_push(link_route_to_test,&link);
       }
       xbt_assert(!xbt_dynar_compare(
-          TO_FLOYD_LINK(dst_net_elm->m_id, src_net_elm->m_id)->link_list,
+          TO_FLOYD_LINK(dst_net_elm->getId(), src_net_elm->getId())->link_list,
           link_route_to_test,
           (int_f_cpvoid_cpvoid_t) floyd_pointer_resource_cmp),
           "The route between \"%s\" and \"%s\" already exists", src,dst);
@@ -250,13 +250,13 @@ void AsFloyd::parseRoute(sg_platf_route_cbarg_t route)
         XBT_DEBUG("Load Route from \"%s\" to \"%s\"", dst, src);
       else
         XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", dst,
-            route->gw_src->p_name, src, route->gw_dst->p_name);
+            route->gw_src->getName(), src, route->gw_dst->getName());
 
-      TO_FLOYD_LINK(dst_net_elm->m_id, src_net_elm->m_id) =
+      TO_FLOYD_LINK(dst_net_elm->getId(), src_net_elm->getId()) =
                 newExtendedRoute(p_hierarchy, route, 0);
-      TO_FLOYD_PRED(dst_net_elm->m_id, src_net_elm->m_id) = dst_net_elm->m_id;
-      TO_FLOYD_COST(dst_net_elm->m_id, src_net_elm->m_id) =
-          ((TO_FLOYD_LINK(dst_net_elm->m_id, src_net_elm->m_id))->link_list)->used;   /* count of links, old model assume 1 */
+      TO_FLOYD_PRED(dst_net_elm->getId(), src_net_elm->getId()) = dst_net_elm->getId();
+      TO_FLOYD_COST(dst_net_elm->getId(), src_net_elm->getId()) =
+          ((TO_FLOYD_LINK(dst_net_elm->getId(), src_net_elm->getId()))->link_list)->used;   /* count of links, old model assume 1 */
     }
   }
   xbt_dynar_free(&route->link_list);
index 02a5168..0156a84 100644 (file)
@@ -83,9 +83,9 @@ xbt_dynar_t AsFull::getOneLinkRoutes()
           OnelinkPtr onelink;
           if (p_hierarchy == SURF_ROUTING_BASE) {
                RoutingEdgePtr tmp_src = xbt_dynar_get_as(p_indexNetworkElm, src, sg_routing_edge_t);
-            tmp_src->m_id = src;
+            tmp_src->setId(src);
                RoutingEdgePtr tmp_dst = xbt_dynar_get_as(p_indexNetworkElm, dst, sg_routing_edge_t);
-               tmp_dst->m_id = dst;
+               tmp_dst->setId(dst);
             onelink = new Onelink(link, tmp_src, tmp_dst);
           } else if (p_hierarchy == SURF_ROUTING_RECURSIVE)
             onelink = new Onelink(link, route->gw_src, route->gw_dst);
@@ -105,10 +105,10 @@ xbt_dynar_t AsFull::getOneLinkRoutes()
 void AsFull::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf_route_cbarg_t res, double *lat)
 {
   XBT_DEBUG("full_get_route_and_latency from %s[%d] to %s[%d]",
-      src->p_name,
-      src->m_id,
-      dst->p_name,
-      dst->m_id  );
+      src->getName(),
+      src->getId(),
+      dst->getName(),
+      dst->getId());
 
   /* set utils vars */
   size_t table_size = xbt_dynar_length(p_indexNetworkElm);
@@ -117,7 +117,7 @@ void AsFull::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf
   void *link;
   unsigned int cpt = 0;
 
-  e_route = TO_ROUTE_FULL(src->m_id, dst->m_id);
+  e_route = TO_ROUTE_FULL(src->getId(), dst->getId());
 
   if (e_route) {
     res->gw_src = e_route->gw_src;
@@ -160,7 +160,7 @@ void AsFull::parseRoute(sg_platf_route_cbarg_t route)
   if (!p_routingTable)
     p_routingTable = xbt_new0(sg_platf_route_cbarg_t, table_size * table_size);
 
-  if (TO_ROUTE_FULL(src_net_elm->m_id, dst_net_elm->m_id)) {
+  if (TO_ROUTE_FULL(src_net_elm->getId(), dst_net_elm->getId())) {
     char *link_name;
     unsigned int i;
     xbt_dynar_t link_route_to_test =
@@ -170,7 +170,7 @@ void AsFull::parseRoute(sg_platf_route_cbarg_t route)
       xbt_assert(link, "Link : '%s' doesn't exists.", link_name);
       xbt_dynar_push(link_route_to_test, &link);
     }
-    if (xbt_dynar_compare(TO_ROUTE_FULL(src_net_elm->m_id, dst_net_elm->m_id)->link_list,
+    if (xbt_dynar_compare(TO_ROUTE_FULL(src_net_elm->getId(), dst_net_elm->getId())->link_list,
         link_route_to_test, full_pointer_resource_cmp)) {
       surf_parse_error("A route between \"%s\" and \"%s\" already exists "
           "with a different content. "
@@ -213,14 +213,14 @@ void AsFull::parseRoute(sg_platf_route_cbarg_t route)
       //                         route->dst_gateway, subas->name);
       as_route = 1;
       XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"",
-          src, route->gw_src->p_name, dst, route->gw_dst->p_name);
-      if (route->gw_dst->p_rcType == SURF_NETWORK_ELEMENT_NULL)
-        xbt_die("The dst_gateway '%s' does not exist!", route->gw_dst->p_name);
-      if (route->gw_src->p_rcType == SURF_NETWORK_ELEMENT_NULL)
-        xbt_die("The src_gateway '%s' does not exist!", route->gw_src->p_name);
+          src, route->gw_src->getName(), dst, route->gw_dst->getName());
+      if (route->gw_dst->getRcType() == SURF_NETWORK_ELEMENT_NULL)
+        xbt_die("The dst_gateway '%s' does not exist!", route->gw_dst->getName());
+      if (route->gw_src->getRcType() == SURF_NETWORK_ELEMENT_NULL)
+        xbt_die("The src_gateway '%s' does not exist!", route->gw_src->getName());
     }
-    TO_ROUTE_FULL(src_net_elm->m_id, dst_net_elm->m_id) = newExtendedRoute(p_hierarchy, route, 1);
-    xbt_dynar_shrink(TO_ROUTE_FULL(src_net_elm->m_id, dst_net_elm->m_id)->link_list, 0);
+    TO_ROUTE_FULL(src_net_elm->getId(), dst_net_elm->getId()) = newExtendedRoute(p_hierarchy, route, 1);
+    xbt_dynar_shrink(TO_ROUTE_FULL(src_net_elm->getId(), dst_net_elm->getId())->link_list, 0);
   }
 
   if ( (route->symmetrical == TRUE && as_route == 0)
@@ -232,7 +232,7 @@ void AsFull::parseRoute(sg_platf_route_cbarg_t route)
       route->gw_src = route->gw_dst;
       route->gw_dst = gw_tmp;
     }
-    if (TO_ROUTE_FULL(dst_net_elm->m_id, src_net_elm->m_id)) {
+    if (TO_ROUTE_FULL(dst_net_elm->getId(), src_net_elm->getId())) {
       char *link_name;
       unsigned int i;
       xbt_dynar_t link_route_to_test =
@@ -243,7 +243,7 @@ void AsFull::parseRoute(sg_platf_route_cbarg_t route)
         xbt_assert(link, "Link : '%s' doesn't exists.", link_name);
         xbt_dynar_push(link_route_to_test, &link);
       }
-      xbt_assert(!xbt_dynar_compare(TO_ROUTE_FULL(dst_net_elm->m_id, src_net_elm->m_id)->link_list,
+      xbt_assert(!xbt_dynar_compare(TO_ROUTE_FULL(dst_net_elm->getId(), src_net_elm->getId())->link_list,
           link_route_to_test,
           full_pointer_resource_cmp),
           "The route between \"%s\" and \"%s\" already exists", src,
@@ -253,9 +253,9 @@ void AsFull::parseRoute(sg_platf_route_cbarg_t route)
         XBT_DEBUG("Load Route from \"%s\" to \"%s\"", dst, src);
       else
         XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"",
-            dst, route->gw_src->p_name, src, route->gw_dst->p_name);
-      TO_ROUTE_FULL(dst_net_elm->m_id, src_net_elm->m_id) = newExtendedRoute(p_hierarchy, route, 0);
-      xbt_dynar_shrink(TO_ROUTE_FULL(dst_net_elm->m_id, src_net_elm->m_id)->link_list, 0);
+            dst, route->gw_src->getName(), src, route->gw_dst->getName());
+      TO_ROUTE_FULL(dst_net_elm->getId(), src_net_elm->getId()) = newExtendedRoute(p_hierarchy, route, 0);
+      xbt_dynar_shrink(TO_ROUTE_FULL(dst_net_elm->getId(), src_net_elm->getId())->link_list, 0);
     }
   }
   xbt_dynar_free(&route->link_list);
index 8a0a781..853f11e 100644 (file)
@@ -44,14 +44,14 @@ AsGeneric::~AsGeneric() {
 
 int AsGeneric::parsePU(RoutingEdgePtr elm)
 {
-  XBT_DEBUG("Load process unit \"%s\"", elm->p_name);
+  XBT_DEBUG("Load process unit \"%s\"", elm->getName());
   xbt_dynar_push_as(p_indexNetworkElm, RoutingEdgePtr, elm);
   return xbt_dynar_length(p_indexNetworkElm)-1;
 }
 
 int AsGeneric::parseAS(RoutingEdgePtr elm)
 {
-  XBT_DEBUG("Load Autonomous system \"%s\"", elm->p_name);
+  XBT_DEBUG("Load Autonomous system \"%s\"", elm->getName());
   xbt_dynar_push_as(p_indexNetworkElm, RoutingEdgePtr, elm);
   return xbt_dynar_length(p_indexNetworkElm)-1;
 }
@@ -74,7 +74,7 @@ void AsGeneric::parseBypassroute(sg_platf_route_cbarg_t e_route)
       src, dst);
   xbt_assert(!xbt_dict_get_or_null(dict_bypassRoutes, route_name),
       "The bypass route between \"%s\"(\"%s\") and \"%s\"(\"%s\") already exists",
-      src, e_route->gw_src->p_name, dst, e_route->gw_dst->p_name);
+      src, e_route->gw_src->getName(), dst, e_route->gw_dst->getName());
 
   sg_platf_route_cbarg_t new_e_route = NULL;
   if(e_route->gw_dst)
@@ -162,7 +162,7 @@ void AsGeneric::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges)
 
       getRouteAndLatency(my_src, my_dst, route, NULL);
 
-      XBT_DEBUG ("get_route_and_latency %s -> %s", my_src->p_name, my_dst->p_name);
+      XBT_DEBUG ("get_route_and_latency %s -> %s", my_src->getName(), my_dst->getName());
 
       unsigned int cpt;
       void *link;
@@ -171,11 +171,11 @@ void AsGeneric::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges)
       const char *previous_name, *current_name;
 
       if (route->gw_src) {
-        previous = new_xbt_graph_node(graph, route->gw_src->p_name, nodes);
-        previous_name = route->gw_src->p_name;
+        previous = new_xbt_graph_node(graph, route->gw_src->getName(), nodes);
+        previous_name = route->gw_src->getName();
       } else {
-        previous = new_xbt_graph_node(graph, my_src->p_name, nodes);
-        previous_name = my_src->p_name;
+        previous = new_xbt_graph_node(graph, my_src->getName(), nodes);
+        previous_name = my_src->getName();
       }
 
       xbt_dynar_foreach(route->link_list, cpt, link) {
@@ -189,11 +189,11 @@ void AsGeneric::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges)
       }
 
       if (route->gw_dst) {
-        current = new_xbt_graph_node(graph, route->gw_dst->p_name, nodes);
-        current_name = route->gw_dst->p_name;
+        current = new_xbt_graph_node(graph, route->gw_dst->getName(), nodes);
+        current_name = route->gw_dst->getName();
       } else {
-        current = new_xbt_graph_node(graph, my_dst->p_name, nodes);
-        current_name = my_dst->p_name;
+        current = new_xbt_graph_node(graph, my_dst->getName(), nodes);
+        current_name = my_dst->getName();
       }
       new_xbt_graph_edge(graph, previous, current, edges);
       XBT_DEBUG ("  %s -> %s", previous_name, current_name);
@@ -209,15 +209,15 @@ sg_platf_route_cbarg_t AsGeneric::getBypassRoute(RoutingEdgePtr src,
                                                double *lat)
 {
   // If never set a bypass route return NULL without any further computations
-  XBT_DEBUG("generic_get_bypassroute from %s to %s", src->p_name, dst->p_name);
+  XBT_DEBUG("generic_get_bypassroute from %s to %s", src->getName(), dst->getName());
   if (no_bypassroute_declared)
     return NULL;
 
   sg_platf_route_cbarg_t e_route_bypass = NULL;
   xbt_dict_t dict_bypassRoutes = p_bypassRoutes;
 
-  if(dst->p_rcComponent == this && src->p_rcComponent == this ){
-    char *route_name = bprintf("%s#%s", src->p_name, dst->p_name);
+  if(dst->getRcComponent() == this && src->getRcComponent() == this ){
+    char *route_name = bprintf("%s#%s", src->getName(), dst->getName());
     e_route_bypass = (sg_platf_route_cbarg_t) xbt_dict_get_or_null(dict_bypassRoutes, route_name);
     if(e_route_bypass)
       XBT_DEBUG("Find bypass route with %ld links",xbt_dynar_length(e_route_bypass->link_list));
@@ -234,10 +234,10 @@ sg_platf_route_cbarg_t AsGeneric::getBypassRoute(RoutingEdgePtr src,
 
     if (src == NULL || dst == NULL)
       xbt_die("Ask for route \"from\"(%s) or \"to\"(%s) no found at AS \"%s\"",
-          src->p_name, dst->p_name, p_name);
+          src->getName(), dst->getName(), p_name);
 
-    src_as = src->p_rcComponent;
-    dst_as = dst->p_rcComponent;
+    src_as = src->getRcComponent();
+    dst_as = dst->getRcComponent();
 
     /* (2) find the path to the root routing component */
     path_src = xbt_dynar_new(sizeof(AsPtr), NULL);
@@ -408,7 +408,7 @@ AsPtr AsGeneric::autonomousSystemExist(char *element)
   char *key;
   element_as = ((RoutingEdgePtr)
       xbt_lib_get_or_null(as_router_lib, element,
-          ROUTING_ASR_LEVEL))->p_rcComponent;
+          ROUTING_ASR_LEVEL))->getRcComponent();
   result = ((AsPtr) - 1);
   if (element_as != this)
     result = asExist(element_as);
@@ -431,7 +431,7 @@ AsPtr AsGeneric::processingUnitsExist(char *element)
   AsPtr element_as;
   element_as = ((RoutingEdgePtr)
       xbt_lib_get_or_null(host_lib,
-          element, ROUTING_HOST_LEVEL))->p_rcComponent;
+          element, ROUTING_HOST_LEVEL))->getRcComponent();
   if (element_as == this)
     return element_as;
   return asExist(element_as);
@@ -445,25 +445,25 @@ void AsGeneric::srcDstCheck(RoutingEdgePtr src, RoutingEdgePtr dst)
 
   if (src_data == NULL || dst_data == NULL)
     xbt_die("Ask for route \"from\"(%s) or \"to\"(%s) no found at AS \"%s\"",
-        src->p_name,
-        dst->p_name,
+        src->getName(),
+        dst->getName(),
         p_name);
 
   AsPtr src_as =
-      (src_data)->p_rcComponent;
+      (src_data)->getRcComponent();
   AsPtr dst_as =
-      (dst_data)->p_rcComponent;
+      (dst_data)->getRcComponent();
 
   if (src_as != dst_as)
     xbt_die("The src(%s in %s) and dst(%s in %s) are in differents AS",
-        src->p_name, src_as->p_name,
-        dst->p_name, dst_as->p_name);
+        src->getName(), src_as->p_name,
+        dst->getName(), dst_as->p_name);
 
   if (this != dst_as)
     xbt_die
     ("The routing component of src'%s' and dst'%s' is not the same as the network elements belong (%s?=%s?=%s)",
-        src->p_name,
-        dst->p_name,
+        src->getName(),
+        dst->getName(),
         src_as->p_name,
         dst_as->p_name,
         p_name);
index c17e02d..79674dd 100644 (file)
@@ -33,14 +33,14 @@ sg_platf_route_cbarg_t AsNone::getBypassRoute(RoutingEdgePtr /*src*/, RoutingEdg
 }
 
 int AsNone::parsePU(RoutingEdgePtr elm) {
-  XBT_DEBUG("Load process unit \"%s\"", elm->p_name);
+  XBT_DEBUG("Load process unit \"%s\"", elm->getName());
   xbt_dynar_push_as(p_indexNetworkElm, RoutingEdgePtr, elm);
   /* don't care about PUs */
   return -1;
 }
 
 int AsNone::parseAS(RoutingEdgePtr elm) {
-  XBT_DEBUG("Load Autonomous system \"%s\"", elm->p_name);
+  XBT_DEBUG("Load Autonomous system \"%s\"", elm->getName());
   xbt_dynar_push_as(p_indexNetworkElm, RoutingEdgePtr, elm);
   /* even don't care about sub-ASes -- I'm as nihilist as an old punk*/
   return -1;
index da190cd..d213c3d 100644 (file)
@@ -22,11 +22,11 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
   s_surf_parsing_link_up_down_t info;
 
   XBT_DEBUG("vivaldi_get_route_and_latency from '%s'[%d] '%s'[%d]",
-                 src->p_name, src->m_id, dst->p_name, dst->m_id);
+                 src->getName(), src->getId(), dst->getName(), dst->getId());
 
-  if(src->p_rcType == SURF_NETWORK_ELEMENT_AS) {
-    char *src_name = ROUTER_PEER(src->p_name);
-    char *dst_name = ROUTER_PEER(dst->p_name);
+  if(src->getRcType() == SURF_NETWORK_ELEMENT_AS) {
+    char *src_name = ROUTER_PEER(src->getName());
+    char *dst_name = ROUTER_PEER(dst->getName());
     route->gw_src = (sg_routing_edge_t) xbt_lib_get_or_null(as_router_lib, src_name, ROUTING_ASR_LEVEL);
     route->gw_dst = (sg_routing_edge_t) xbt_lib_get_or_null(as_router_lib, dst_name, ROUTING_ASR_LEVEL);
     xbt_free(src_name);
@@ -37,11 +37,11 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
   xbt_dynar_t src_ctn, dst_ctn;
   char *tmp_src_name, *tmp_dst_name;
 
-  if(src->p_rcType == SURF_NETWORK_ELEMENT_HOST){
-    tmp_src_name = HOST_PEER(src->p_name);
+  if(src->getRcType() == SURF_NETWORK_ELEMENT_HOST){
+    tmp_src_name = HOST_PEER(src->getName());
 
     if(p_linkUpDownList){
-      info = xbt_dynar_get_as(p_linkUpDownList, src->m_id, s_surf_parsing_link_up_down_t);
+      info = xbt_dynar_get_as(p_linkUpDownList, src->getId(), s_surf_parsing_link_up_down_t);
       if(info.link_up) { // link up
         xbt_dynar_push_as(route->link_list, void*, info.link_up);
         if (lat)
@@ -49,21 +49,21 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
       }
     }
     src_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, tmp_src_name, COORD_HOST_LEVEL);
-    if(!src_ctn ) src_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, src->p_name, COORD_HOST_LEVEL);
+    if(!src_ctn ) src_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, src->getName(), COORD_HOST_LEVEL);
   }
-  else if(src->p_rcType == SURF_NETWORK_ELEMENT_ROUTER || src->p_rcType == SURF_NETWORK_ELEMENT_AS){
-    tmp_src_name = ROUTER_PEER(src->p_name);
+  else if(src->getRcType() == SURF_NETWORK_ELEMENT_ROUTER || src->getRcType() == SURF_NETWORK_ELEMENT_AS){
+    tmp_src_name = ROUTER_PEER(src->getName());
     src_ctn = (xbt_dynar_t) xbt_lib_get_or_null(as_router_lib, tmp_src_name, COORD_ASR_LEVEL);
   }
   else{
     THROW_IMPOSSIBLE;
   }
 
-  if(dst->p_rcType == SURF_NETWORK_ELEMENT_HOST){
-    tmp_dst_name = HOST_PEER(dst->p_name);
+  if(dst->getRcType() == SURF_NETWORK_ELEMENT_HOST){
+    tmp_dst_name = HOST_PEER(dst->getName());
 
     if(p_linkUpDownList){
-      info = xbt_dynar_get_as(p_linkUpDownList, dst->m_id, s_surf_parsing_link_up_down_t);
+      info = xbt_dynar_get_as(p_linkUpDownList, dst->getId(), s_surf_parsing_link_up_down_t);
       if(info.link_down) { // link down
         xbt_dynar_push_as(route->link_list,void*,info.link_down);
         if (lat)
@@ -71,10 +71,10 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
       }
     }
     dst_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, tmp_dst_name, COORD_HOST_LEVEL);
-    if(!dst_ctn ) dst_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, dst->p_name, COORD_HOST_LEVEL);
+    if(!dst_ctn ) dst_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, dst->getName(), COORD_HOST_LEVEL);
   }
-  else if(dst->p_rcType == SURF_NETWORK_ELEMENT_ROUTER || dst->p_rcType == SURF_NETWORK_ELEMENT_AS){
-    tmp_dst_name = ROUTER_PEER(dst->p_name);
+  else if(dst->getRcType() == SURF_NETWORK_ELEMENT_ROUTER || dst->getRcType() == SURF_NETWORK_ELEMENT_AS){
+    tmp_dst_name = ROUTER_PEER(dst->getName());
     dst_ctn = (xbt_dynar_t) xbt_lib_get_or_null(as_router_lib, tmp_dst_name, COORD_ASR_LEVEL);
   }
   else{
@@ -96,7 +96,7 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
 }
 
 int AsVivaldi::parsePU(RoutingEdgePtr elm) {
-  XBT_DEBUG("Load process unit \"%s\"", elm->p_name);
+  XBT_DEBUG("Load process unit \"%s\"", elm->getName());
   xbt_dynar_push_as(p_indexNetworkElm, sg_routing_edge_t, elm);
   return xbt_dynar_length(p_indexNetworkElm)-1;
 }
index 66b3c6a..3488cd7 100644 (file)
@@ -252,7 +252,7 @@ WorkstationVMHL13::WorkstationVMHL13(WorkstationVMModelPtr model, const char* na
    * from the VM name, we have to make sure that the system does not call the
    * free callback for the network resource object. The network resource object
    * is still used by the physical machine. */
-  p_netElm = static_cast<RoutingEdgePtr>(xbt_lib_get_or_null(host_lib, sub_ws->getName(), ROUTING_HOST_LEVEL));
+  p_netElm = new RoutingEdgeWrapper(static_cast<RoutingEdgePtr>(xbt_lib_get_or_null(host_lib, sub_ws->getName(), ROUTING_HOST_LEVEL)));
   xbt_lib_set(host_lib, name, ROUTING_HOST_LEVEL, p_netElm);
 
   p_subWs = sub_ws;