Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Hide some deprecated symbols from doxygen
[simgrid.git] / include / simgrid / s4u / NetZone.hpp
index c100c59..d814cf2 100644 (file)
@@ -27,11 +27,13 @@ namespace s4u {
  * s4u::Engine).
  */
 class XBT_PUBLIC NetZone {
+#ifndef DOXYGEN
+  friend kernel::routing::NetZoneImpl;
+#endif
+
   kernel::routing::NetZoneImpl* const pimpl_;
 
 protected:
-  friend kernel::routing::NetZoneImpl;
-
   explicit NetZone(kernel::routing::NetZoneImpl* impl) : pimpl_(impl) {}
 
 public:
@@ -40,7 +42,6 @@ public:
   /** @brief Retrieves the name of that netzone as a C string */
   const char* get_cname() const;
 
-  XBT_ATTRIB_DEPRECATED_v331("Please use get_parent()") NetZone* get_father();
   NetZone* get_parent() const;
   NetZone* set_parent(const NetZone* parent);
 
@@ -57,9 +58,12 @@ public:
   /** @brief Get the netpoint associated to this netzone */
   kernel::routing::NetPoint* get_netpoint();
 
+#ifndef DOXYGEN
+  XBT_ATTRIB_DEPRECATED_v331("Please use get_parent()") NetZone* get_father() const;
   std::vector<NetZone*> get_children() const;
   XBT_ATTRIB_DEPRECATED_v332("Please use set_parent() to manage NetZone's relationship") NetZone* add_child(
       NetZone* new_zone);
+#endif
 
   void extract_xbt_graph(const s_xbt_graph_t* graph, std::map<std::string, xbt_node_t, std::less<>>* nodes,
                          std::map<std::string, xbt_edge_t, std::less<>>* edges);
@@ -76,26 +80,44 @@ public:
    *
    * @param src Source netzone's netpoint
    * @param dst Destination netzone' netpoint
-   * @param src_gw Netpoint of the gateway in the source netzone
-   * @param dst_gw Netpoint of the gateway in the destination netzone
-   * @param link_list List of links used in this communication
+   * @param gw_src Netpoint of the gateway in the source netzone
+   * @param gw_dst Netpoint of the gateway in the destination netzone
+   * @param link_list List of links and their direction used in this communication
    * @param symmetrical Bi-directional communication
    */
   void add_route(kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst, kernel::routing::NetPoint* gw_src,
-                 kernel::routing::NetPoint* gw_dst, const std::vector<Link*>& link_list, bool symmetrical = true);
+                 kernel::routing::NetPoint* gw_dst, const std::vector<LinkInRoute>& link_list, bool symmetrical = true);
+
+#ifndef DOXYGEN
+  XBT_ATTRIB_DEPRECATED_v332("Please use add_route() method which uses s4u::LinkInRoute instead of "
+                             "LinkImpl") void add_route(kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst,
+                                                        kernel::routing::NetPoint* gw_src,
+                                                        kernel::routing::NetPoint* gw_dst,
+                                                        const std::vector<kernel::resource::LinkImpl*>& link_list,
+                                                        bool symmetrical);
+
+  XBT_ATTRIB_DEPRECATED_v332("Please use add_bypass_route() method which uses s4u::LinkInRoute instead of "
+                             "LinkImpl") void add_bypass_route(kernel::routing::NetPoint* src,
+                                                               kernel::routing::NetPoint* dst,
+                                                               kernel::routing::NetPoint* gw_src,
+                                                               kernel::routing::NetPoint* gw_dst,
+                                                               std::vector<kernel::resource::LinkImpl*>& link_list,
+                                                               bool /*symmetrical*/);
+#endif
 
-  XBT_ATTRIB_DEPRECATED_v332("Please use add_route() method which uses s4u::Link instead of LinkImpl") void add_route(
-      kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst, kernel::routing::NetPoint* gw_src,
-      kernel::routing::NetPoint* gw_dst, const std::vector<kernel::resource::LinkImpl*>& link_list, bool symmetrical);
   void add_bypass_route(kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst,
                         kernel::routing::NetPoint* gw_src, kernel::routing::NetPoint* gw_dst,
-                        std::vector<kernel::resource::LinkImpl*>& link_list, bool symmetrical);
+                        const std::vector<LinkInRoute>& link_list);
 
+#ifndef DOXYGEN
   /*** Called on each newly created regular route (not on bypass routes) */
   static xbt::signal<void(bool symmetrical, kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst,
                           kernel::routing::NetPoint* gw_src, kernel::routing::NetPoint* gw_dst,
                           std::vector<kernel::resource::LinkImpl*> const& link_list)>
-      on_route_creation;
+      on_route_creation; // XBT_ATTRIB_DEPRECATED_v332 : should not be used by users, used by ns3.. if necessary,
+                         // signal shouldn't use LinkImpl*
+#endif
+
   static xbt::signal<void(NetZone const&)> on_creation;
   static xbt::signal<void(NetZone const&)> on_seal;
 
@@ -103,7 +125,7 @@ public:
    * @brief Create a host
    *
    * @param name Host name
-   * @param speed_per_state Vector of CPU's speeds
+   * @param speed_per_pstate Vector of CPU's speeds
    */
   s4u::Host* create_host(const std::string& name, const std::vector<double>& speed_per_pstate);
   s4u::Host* create_host(const std::string& name, double speed);
@@ -129,6 +151,24 @@ public:
   s4u::Link* create_link(const std::string& name, const std::vector<std::string>& bandwidths);
   s4u::Link* create_link(const std::string& name, const std::string& bandwidth);
 
+  /**
+   * @brief Create a split-duplex link
+   *
+   * In SimGrid, split-duplex links are a composition of 2 regular (shared) links (up/down).
+   *
+   * This function eases its utilization by creating the 2 links for you. We append a suffix
+   * "_UP" and "_DOWN" to your link name to identify each of them.
+   *
+   * Both up/down links have exactly the same bandwidth
+   *
+   * @param name Name of the link
+   * @param bandwidth Speed
+   */
+  s4u::SplitDuplexLink* create_split_duplex_link(const std::string& name, const std::string& bandwidth);
+  s4u::SplitDuplexLink* create_split_duplex_link(const std::string& name, double bandwidth);
+
+  kernel::resource::NetworkModelIntf* get_network_model() const;
+
   /**
    * @brief Make a router within that NetZone
    *
@@ -140,8 +180,10 @@ public:
   NetZone* seal();
 
 private:
-  /** @brief Auxiliary function to get list of LinkImpl */
-  static std::vector<kernel::resource::LinkImpl*> get_link_list_impl(const std::vector<Link*> link_list);
+#ifndef DOXYGEN
+  /** @brief XBT_ATTRIB_DEPRECATED_v332 Auxiliary function to convert types */
+  static std::vector<LinkInRoute> convert_to_linkInRoute(const std::vector<kernel::resource::LinkImpl*>& link_list);
+#endif
 };
 
 // External constructors so that the types (and the types of their content) remain hidden
@@ -190,9 +232,10 @@ struct ClusterCallbacks {
   std::function<ClusterNetPointCb> netpoint;
   std::function<ClusterLinkCb> loopback = {};
   std::function<ClusterLinkCb> limiter  = {};
-  explicit ClusterCallbacks(std::function<ClusterNetPointCb> set_netpoint) : netpoint(set_netpoint){/*nothing to do */};
-  ClusterCallbacks(std::function<ClusterNetPointCb> set_netpoint, std::function<ClusterLinkCb> set_loopback,
-                   std::function<ClusterLinkCb> set_limiter)
+  explicit ClusterCallbacks(const std::function<ClusterNetPointCb>& set_netpoint)
+      : netpoint(set_netpoint){/*nothing to do */};
+  ClusterCallbacks(const std::function<ClusterNetPointCb>& set_netpoint,
+                   const std::function<ClusterLinkCb>& set_loopback, const std::function<ClusterLinkCb>& set_limiter)
       : netpoint(set_netpoint), loopback(set_loopback), limiter(set_limiter){/*nothing to do */};
 };
 /**