-/* Copyright (c) 2006-2017. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2006-2018. 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. */
*/
#include <simgrid/s4u.hpp>
+#include <string>
// This declares a logging channel so that XBT_INFO can be used later
XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_actor_create, "The logging channel used in this example");
XBT_INFO("Hello s4u, I have something to send");
simgrid::s4u::MailboxPtr mailbox = simgrid::s4u::Mailbox::byName("mb42");
- mailbox->put(xbt_strdup(msg.c_str()), msg.size());
+ mailbox->put(new std::string(msg), msg.size());
XBT_INFO("I'm done. See you.");
}
};
}
void operator()()
{
- XBT_INFO("Hello s4u, I'm ready to get any message you'd want on %s", mailbox->getName());
+ XBT_INFO("Hello s4u, I'm ready to get any message you'd want on %s", mailbox->get_cname());
- char* msg1 = static_cast<char*>(mailbox->get());
- char* msg2 = static_cast<char*>(mailbox->get());
- XBT_INFO("I received '%s' and '%s'", msg1, msg2);
- xbt_free(msg1);
- xbt_free(msg2);
+ std::string* msg1 = static_cast<std::string*>(mailbox->get());
+ std::string* msg2 = static_cast<std::string*>(mailbox->get());
+ XBT_INFO("I received '%s' and '%s'", msg1->c_str(), msg2->c_str());
+ delete msg1;
+ delete msg2;
XBT_INFO("I'm done. See you.");
}
};
simgrid::s4u::Engine e(&argc, argv);
/* Then you should load a platform file, describing your simulated platform */
- e.loadPlatform("../../platforms/small_platform.xml");
+ e.load_platform("../../platforms/small_platform.xml");
/* And now you have to ask SimGrid to actually start your actors.
*
* You can first directly start your actor, as follows. Note the last parameter: 'Sender()',
* as if you would call the Sender function.
*/
- simgrid::s4u::Actor::createActor("sender1", simgrid::s4u::Host::by_name("Tremblay"), Sender());
+ simgrid::s4u::Actor::create("sender1", simgrid::s4u::Host::by_name("Tremblay"), Sender());
/* The second way is to first register your function, and then retrieve it */
e.registerFunction<Sender>("sender"); // The sender is passed as a template parameter here
std::vector<std::string> args; // Here we declare the parameter that the actor will get
args.push_back("GloubiBoulga"); // Add a parameter to the set (we could have done it in the first approach too)
- simgrid::s4u::Actor::createActor("sender2", simgrid::s4u::Host::by_name("Jupiter"), "sender", args);
+ simgrid::s4u::Actor::create("sender2", simgrid::s4u::Host::by_name("Jupiter"), "sender", args);
/* The third way to start your actors is to use a deployment file. */
e.registerFunction<Receiver>("receiver"); // You first have to register the actor as with the second approach
- e.loadDeployment("s4u-actor-create_d.xml"); // And then, you load the deployment file
+ e.load_deployment("s4u-actor-create_d.xml"); // And then, you load the deployment file
/* Once every actors are started in the engine, the simulation can start */
e.run();