Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
fix the handling of bypassASroutes
[simgrid.git] / src / kernel / routing / AsImpl.hpp
index 374b711..700f067 100644 (file)
@@ -26,10 +26,13 @@ namespace routing {
 XBT_PUBLIC_CLASS AsImpl : public s4u::As {
   friend simgrid::kernel::routing::RoutingPlatf;
 protected:
-  explicit AsImpl(const char *name);
+  explicit AsImpl(As * father, const char* name);
   ~AsImpl() override;
   
 public:
+  /** @brief attach the given host to that AS */
+  void attachHost(s4u::Host * host);
+
   /**
    * @brief Probe the routing path between two points
    *
@@ -57,11 +60,13 @@ public:
   virtual void getRouteAndLatency(NetCard *src, NetCard *dst, sg_platf_route_cbarg_t into, double *latency)=0;
   /** @brief retrieves the list of all routes of size 1 (of type src x dst x Link) */
   virtual xbt_dynar_t getOneLinkRoutes();
-  std::vector<surf::Link*> *getBypassRoute(routing::NetCard *src, routing::NetCard *dst);
+  /* returns whether we found a bypass path */
+  bool getBypassRoute(routing::NetCard * src, routing::NetCard * dst,
+                      /* OUT */ std::vector<surf::Link*> * links, double* latency);
 
   virtual void getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges)=0;
-  static void getRouteRecursive(routing::NetCard *src, routing::NetCard *dst, /* OUT */ std::vector<surf::Link*> * links, double *latency);
-
+  static void getRouteRecursive(routing::NetCard * src, routing::NetCard * dst,
+                                /* OUT */ std::vector<surf::Link*> * links, double* latency);
 
   enum class RoutingMode {
     unset = 0,  /**< Undefined type                                   */