X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0199ba108d66c94df94e4f044994e79efdece4b1..ad02a1b4a1730fb36f36295f8749d4811f4d9a65:/examples/platforms/griffon.cpp diff --git a/examples/platforms/griffon.cpp b/examples/platforms/griffon.cpp index d326305dd1..04a83e6fcf 100644 --- a/examples/platforms/griffon.cpp +++ b/examples/platforms/griffon.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2006-2021. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2006-2023. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -16,18 +16,18 @@ namespace sg4 = simgrid::s4u; * @param root Root netzone * @param name Cabinet name * @param radicals IDs of nodes inside the cabinet - * @return netzone,router the created netzone and its router + * @return netzone the created netzone */ -static std::pair +static sg4::NetZone* create_cabinet(const sg4::NetZone* root, const std::string& name, const std::vector& radicals) { - auto* cluster = sg4::create_star_zone(name); + auto* cluster = sg4::create_star_zone(name)->set_parent(root); std::string prefix = "griffon-"; std::string suffix = ".nancy.grid5000.fr"; - cluster->set_parent(root); /* create the backbone link */ - sg4::Link* l_bb = cluster->create_link("backbone-" + name, "1.25GBps")->seal(); + const sg4::Link* l_bb = cluster->create_link("backbone-" + name, "1.25GBps"); + sg4::LinkInRoute backbone(l_bb); /* create all hosts and connect them to outside world */ for (const auto& id : radicals) { @@ -35,20 +35,17 @@ create_cabinet(const sg4::NetZone* root, const std::string& name, const std::vec /* create host */ const sg4::Host* host = cluster->create_host(hostname, "286.087kf"); /* create UP/DOWN link */ - sg4::Link* l_up = cluster->create_link(hostname + "_up", "125MBps")->set_latency("24us")->seal(); - sg4::Link* l_down = cluster->create_link(hostname + "_down", "125MBps")->set_latency("24us")->seal(); + const sg4::Link* link = cluster->create_split_duplex_link(hostname, "125MBps")->set_latency("24us"); - /* add link UP and backbone for communications from the host */ - cluster->add_route(host->get_netpoint(), nullptr, nullptr, nullptr, std::vector{l_up, l_bb}, false); - /* add backbone and link DOWN for communications to the host */ - cluster->add_route(nullptr, host->get_netpoint(), nullptr, nullptr, std::vector{l_bb, l_down}, false); + /* add link and backbone for communications from the host */ + cluster->add_route(host, nullptr, {{link, sg4::LinkInRoute::Direction::UP}, backbone}, true); } - /* create router */ - auto* router = cluster->create_router(prefix + name + "-router" + suffix); + /* create gateway */ + cluster->set_gateway(cluster->create_router(prefix + name + "-router" + suffix)); cluster->seal(); - return std::make_pair(cluster, router); + return cluster; } /** @brief Programmatic version of griffon.xml */ @@ -76,31 +73,31 @@ void load_platform(const sg4::Engine& /*e*/) auto* root = sg4::create_star_zone("AS_griffon"); sg4::NetZone* cab_zone; - simgrid::kernel::routing::NetPoint* router; /* create top link */ - sg4::Link* link = root->create_link("backbone", "1.25GBps")->set_latency("24us")->seal(); + const sg4::Link* l_bb = root->create_link("backbone", "1.25GBps")->set_latency("24us")->seal(); + sg4::LinkInRoute backbone{l_bb}; /* create cabinet1 */ std::vector rad(32); std::iota(rad.begin(), rad.end(), 1); // 1-29,58,59,60 - rad[rad.size() - 1] = 60; - rad[rad.size() - 2] = 59; - rad[rad.size() - 3] = 58; - std::tie(cab_zone, router) = create_cabinet(root, "cabinet1", rad); - root->add_route(cab_zone->get_netpoint(), nullptr, router, nullptr, {link}); + rad[rad.size() - 1] = 60; + rad[rad.size() - 2] = 59; + rad[rad.size() - 3] = 58; + cab_zone = create_cabinet(root, "cabinet1", rad); + root->add_route(cab_zone, nullptr, {backbone}); /* create cabinet2 */ rad.resize(28); std::iota(rad.begin(), rad.end(), 30); // 30-57 - std::tie(cab_zone, router) = create_cabinet(root, "cabinet2", rad); - root->add_route(cab_zone->get_netpoint(), nullptr, router, nullptr, {link}); + cab_zone = create_cabinet(root, "cabinet2", rad); + root->add_route(cab_zone, nullptr, {backbone}); /* create cabinet3 */ rad.resize(32); std::iota(rad.begin(), rad.end(), 61); // 61-92 - std::tie(cab_zone, router) = create_cabinet(root, "cabinet3", rad); - root->add_route(cab_zone->get_netpoint(), nullptr, router, nullptr, {link}); + cab_zone = create_cabinet(root, "cabinet3", rad); + root->add_route(cab_zone, nullptr, {backbone}); root->seal(); -} \ No newline at end of file +}