X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3b56ba0e1914362b1c7e6b7d84bf72e2fe88f3c2..e0f1a9dae032024c4f4043e29fa878fc2a6f7699:/examples/cpp/operation-switch-host/s4u-operation-switch-host.cpp diff --git a/examples/cpp/operation-switch-host/s4u-operation-switch-host.cpp b/examples/cpp/operation-switch-host/s4u-operation-switch-host.cpp index 5803181e92..72d52dcf6f 100644 --- a/examples/cpp/operation-switch-host/s4u-operation-switch-host.cpp +++ b/examples/cpp/operation-switch-host/s4u-operation-switch-host.cpp @@ -4,76 +4,74 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ /* This example demonstrates how to dynamically modify a graph of operations. - * - * Assuming we have two instances of a service placed on different hosts, + * + * Assuming we have two instances of a service placed on different hosts, * we want to send data alternatively to thoses instances. * * We consider the following graph: - * + * * comm0 -> exec1 -> comm1 - * ↳-> exec2 ->comm2 - * + * ↳-> exec2 ->comm2 + * * With exec1 and exec2 on different hosts. */ -#include "simgrid/s4u.hpp" #include "simgrid/plugins/operation.hpp" +#include "simgrid/s4u.hpp" XBT_LOG_NEW_DEFAULT_CATEGORY(operation_switch_host, "Messages specific for this operation example"); int main(int argc, char* argv[]) { - simgrid::s4u::Engine e(&argc, argv); - e.load_platform(argv[1]); - simgrid::plugins::Operation::init(); - - // Retrieve hosts - auto tremblay = e.host_by_name("Tremblay"); - auto jupiter = e.host_by_name("Jupiter"); - auto fafard = e.host_by_name("Fafard"); + simgrid::s4u::Engine e(&argc, argv); + e.load_platform(argv[1]); + simgrid::plugins::Operation::init(); - // Create operations - auto comm0 = simgrid::plugins::CommOp::create("comm0",1e7,tremblay,jupiter); - auto exec1 = simgrid::plugins::ExecOp::create("exec1",1e9,jupiter); - auto exec2 = simgrid::plugins::ExecOp::create("exec2",1e9,fafard); - auto comm1 = simgrid::plugins::CommOp::create("comm1",1e7,jupiter,tremblay); - auto comm2 = simgrid::plugins::CommOp::create("comm2",1e7,fafard,tremblay); + // Retrieve hosts + auto tremblay = e.host_by_name("Tremblay"); + auto jupiter = e.host_by_name("Jupiter"); + auto fafard = e.host_by_name("Fafard"); - // Create the initial graph by defining dependencies between operations - comm0->add_successor(exec2); - exec1->add_successor(comm1); - exec2->add_successor(comm2); + // Create operations + auto comm0 = simgrid::plugins::CommOp::create("comm0", 1e7, tremblay, jupiter); + auto exec1 = simgrid::plugins::ExecOp::create("exec1", 1e9, jupiter); + auto exec2 = simgrid::plugins::ExecOp::create("exec2", 1e9, fafard); + auto comm1 = simgrid::plugins::CommOp::create("comm1", 1e7, jupiter, tremblay); + auto comm2 = simgrid::plugins::CommOp::create("comm2", 1e7, fafard, tremblay); - // Add a function to be called when operations end for log purpose - std::vector v = - {comm0,exec1,exec2,comm1,comm2}; - for (auto op : v) - op->on_end([](simgrid::plugins::Operation* op) { - XBT_INFO("Operation %s finished (%d)",op->get_name().c_str(), op->get_count()); - }); + // Create the initial graph by defining dependencies between operations + comm0->add_successor(exec2); + exec1->add_successor(comm1); + exec2->add_successor(comm2); - // Add a function to be called before each executions of comm0 - // This function modifies the graph of operations by adding or removing - // successors to comm0 - int count = 0; - comm0->on_start([&](simgrid::plugins::Operation* op) { - if (count % 2 == 0) { - comm0->set_destination(jupiter); - comm0->add_successor(exec1); - comm0->remove_successor(exec2); - } - else { - comm0->set_destination(fafard); - comm0->add_successor(exec2); - comm0->remove_successor(exec1); - } - count++; + // Add a function to be called when operations end for log purpose + std::vector v = {comm0, exec1, exec2, comm1, comm2}; + for (auto op : v) + op->on_end([](simgrid::plugins::Operation* op) { + XBT_INFO("Operation %s finished (%d)", op->get_name().c_str(), op->get_count()); }); - // Enqueue four executions for operation comm0 - comm0->enqueue_execs(4); + // Add a function to be called before each executions of comm0 + // This function modifies the graph of operations by adding or removing + // successors to comm0 + int count = 0; + comm0->on_start([&](simgrid::plugins::Operation* op) { + if (count % 2 == 0) { + comm0->set_destination(jupiter); + comm0->add_successor(exec1); + comm0->remove_successor(exec2); + } else { + comm0->set_destination(fafard); + comm0->add_successor(exec2); + comm0->remove_successor(exec1); + } + count++; + }); + + // Enqueue four executions for operation comm0 + comm0->enqueue_execs(4); - // Start the simulation - e.run(); - return 0; + // Start the simulation + e.run(); + return 0; }