Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
doc/tuto: docker, show how to fix the permissions
[simgrid.git] / docs / source / Platform_cpp.rst
index cbbd33b..75abec5 100644 (file)
@@ -11,7 +11,7 @@
    <br/>
 
 .. _platform_cpp:
-   
+
 C++ Platforms
 #############
 
@@ -65,15 +65,19 @@ under the hood, SimGrid creates 2 links in this case: the *1_UP*
 link and the *1_DOWN* link. As you can see, the selection of link to use
 in the <route> tag is done by the ``direction=`` parameter.
 
-Using the C++ interface, you should describe both links separately and use them
-in the route description.
+Using the C++ interface, you can use the specific function to create these 2 links. Note
+that you need to define the direction in the add_route function when adding a route containing
+a split-duplex link. Otherwise, SimGrid cannot know which link (UP/DOWN) to use.
 
 .. code-block:: cpp
 
-    Link* l_up   = zone->create_link("1_UP", "125MBps")->set_latency("24us")->seal();
-    Link* l_down = zone->create_link("1_DOWN", "125MBps")->set_latency("24us")->seal();
-    
-    zone->add_route(S1, C1, nullptr, nullptr, {link_down});
+    auto* link = zone->create_split_duplex_link("1", "125MBps")->set_latency("24us")->seal();
+
+    zone->add_route(S1, C1, nullptr, nullptr, {{link, LinkInRoute::Direction::UP}});
+
+.. note::
+    Do not use set_sharing_policy(SharingPolicy::SPLITDUPLEX).
+    SimGrid will complain since set_sharing_policy should be used only with (SHARED and FATPIPE)
 
 
 Loading the platform
@@ -87,7 +91,7 @@ function, having a predefined function implemented. When loading the platform, t
 Engine will look for a function with this signature: "**void load_platform(const sg4::Engine& e)**", and
 execute it. It could be an easy way to make the transition between XML and C++ if necessary.
 
-For more details, please refer to the cpp and CMakeLists.txt files in 
+For more details, please refer to the cpp and CMakeLists.txt files in
 `examples/platform <https://framagit.org/simgrid/simgrid/tree/master/examples/platforms>`_.
 
 
@@ -167,7 +171,7 @@ Note that the leaves and loopback links are defined through callbacks, as follow
       const sg4::Host* gpu = host_zone->create_host(gpu_name, 1e12)->seal();
       /* connecting them */
       sg4::Link* link   = host_zone->create_link("link-" + cpu_name, 10e9)->set_latency(10e-9)->seal();
-      host_zone->add_route(cpu->get_netpoint(), gpu->get_netpoint(), nullptr, nullptr, std::vector<sg4::Link*>{link});
+      host_zone->add_route(cpu->get_netpoint(), gpu->get_netpoint(), nullptr, nullptr, {sg4::LinkInRoute(link)});
 
       host_zone->seal();
       /* cpu is the gateway for this host */
@@ -176,4 +180,3 @@ Note that the leaves and loopback links are defined through callbacks, as follow
 
 The code is straightforward and can be easily adapted to more complex environments thanks to the flexibility
 provided by the C++ API.
-