-/* Copyright (c) 2006-2021. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2006-2022. 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. */
static void forwarder(int argc, char** argv)
{
xbt_assert(argc >= 3, "Actor forwarder requires 2 parameters, but got only %d", argc - 1);
- sg4::Mailbox* in = sg4::Mailbox::by_name(argv[1]);
- sg4::Mailbox* out = sg4::Mailbox::by_name(argv[2]);
- auto* msg = in->get<std::string>();
+ sg4::Mailbox* in = sg4::Mailbox::by_name(argv[1]);
+ sg4::Mailbox* out = sg4::Mailbox::by_name(argv[2]);
+ auto* msg = in->get<std::string>();
XBT_INFO("Forward '%s'.", msg->c_str());
out->put(msg, msg->size());
}
class Sender {
public:
std::string mbox = "mb42";
- std::string msg = "GaBuZoMeu";
+ std::string msg = "GaBuZoMeu";
explicit Sender() = default; /* Sending the default message */
- explicit Sender(const std::string& arg) : msg(arg)
- { /* Sending the specified message */
- }
+ explicit Sender(const std::string& arg) : msg(arg) { /* Sending the specified message */}
explicit Sender(std::vector<std::string> args)
{
/* This constructor is used when we start the actor from the deployment file */
sg4::Engine e(&argc, argv);
/* Then you should load a platform file, describing your simulated platform */
- e.load_platform(argv[1]);
+ e.load_platform("../../platforms/small_platform.xml");
/* And now you have to ask SimGrid to actually start your actors.
*
* as we do here for the receiver actors. This function can take any kind of parameters, as
* long as the last parameters of Actor::create() match what your function expects.
*/
- sg4::Actor::create("receiver", sg4::Host::by_name("Fafard"), &receiver, "mb42");
+ sg4::Actor::create("receiver", e.host_by_name("Fafard"), &receiver, "mb42");
/* If your actor is getting more complex, you probably want to implement it as a class instead,
* as we do here for the sender actors. The main behavior goes into operator()() of the class.
*
* You can then directly start your actor, as follows: */
- sg4::Actor::create("sender1", sg4::Host::by_name("Tremblay"), Sender());
+ sg4::Actor::create("sender1", e.host_by_name("Tremblay"), Sender());
/* If you want to pass parameters to your class, that's very easy: just use your constructors */
- sg4::Actor::create("sender2", sg4::Host::by_name("Jupiter"), Sender("GloubiBoulga"));
+ sg4::Actor::create("sender2", e.host_by_name("Jupiter"), Sender("GloubiBoulga"));
/* But starting actors directly is considered as a bad experimental habit, since it ties the code
* you want to test with the experimental scenario. Starting your actors from an external deployment