Host(Host const&) = delete;
Host& operator=(Host const&) = delete;
- /** Retrieves an host from its name, or return nullptr */
+ /** Retrieve an host from its name, or return nullptr */
static Host* by_name_or_null(std::string name);
- /** Retrieves an host from its name, or die */
+ /** Retrieve an host from its name, or die */
static s4u::Host* by_name(std::string name);
- /** Retrieves the host on which the current actor is running */
+ /** Retrieve the host on which the current actor is running */
static s4u::Host* current();
/** Retrieves the name of that host as a C++ string */
m.def("info", [](char* s) { XBT_INFO("%s", s); }, "Display a logging message of default priority.");
+ /* this_actor namespace */
m.def("execute", py::overload_cast<double>(&simgrid::s4u::this_actor::execute),
"Block the actor, computing the given amount of flops");
- m.def("yield_", &simgrid::s4u::this_actor::yield);
+ m.def("yield_", &simgrid::s4u::this_actor::yield, "Yield the actor");
+ /* Class Engine */
py::class_<Engine>(m, "Engine")
.def(py::init([](std::vector<std::string> args) -> simgrid::s4u::Engine* {
static char noarg[] = {'\0'};
// Currently this can be dangling, we should wrap this somehow.
return new simgrid::s4u::Engine(&argc, argv.get());
}))
- .def("load_platform", &Engine::load_platform)
- .def("load_deployment", &Engine::load_deployment)
- .def("run", &Engine::run)
- .def("register_function", [](Engine*, const char* name, std::function<void(std::vector<std::string>)> f) {
- simgrid::simix::register_function(
- name, [f](std::vector<std::string> args) -> simgrid::simix::ActorCode { return [args, f]() { f(args); }; });
- });
+ .def("load_platform", &Engine::load_platform, "Load a platform file describing the environment")
+ .def("load_deployment", &Engine::load_deployment, "Load a deployment file and launch the actors that it contains")
+ .def("run", &Engine::run, "Run the simulation")
+ .def("register_function", [](Engine*, std::string name, std::function<void(std::vector<std::string>)> f) {
+ simgrid::simix::register_function(name,
+ [f](std::vector<std::string> args) -> simgrid::simix::ActorCode {
+ return [args, f]() { f(args); };
+ });
+ }, "Registers the main function of an actor that will be launched from the deployment file");
// Currently, Host lead to segfault:
- py::class_<simgrid::s4u::Host, std::unique_ptr<Host, py::nodelete>>(m, "Host").def("by_name", &Host::by_name);
+ py::class_<simgrid::s4u::Host, std::unique_ptr<Host, py::nodelete>>(m, "Host")
+ .def("by_name", &Host::by_name, "Retrieve an host from its name, or die");
- simgrid::s4u::ActorPtr (*create_actor)(std::string, Host*, std::function<void()>) = &Actor::create;
-
- py::class_<simgrid::s4u::Actor, ActorPtr>(m, "Actor");
+ py::class_<simgrid::s4u::Actor, ActorPtr>(m, "Actor", "An actor is an independent stream of execution in your distributed application");
- m.def("create_actor", create_actor);
+ // Select the right template instantiation
+ simgrid::s4u::ActorPtr (*create_actor)(std::string, Host*, std::function<void()>) = &Actor::create;
+ m.def("create_actor", create_actor, "Create an actor");
m.def("create_actor", [](std::string name, Host* host) -> std::function<ActorPtr(std::function<void()>)> {
return [name, host](std::function<void()> f) -> ActorPtr {
- return simgrid::s4u::Actor::create(name.c_str(), host, std::move(f));
+ return simgrid::s4u::Actor::create(name, host, std::move(f));
};
- });
+ }, "Create an actor");
}