]> AND Public Git Repository - simgrid.git/blobdiff - src/bindings/python/simgrid_python.cpp
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
MC: apply some sonar advices
[simgrid.git] / src / bindings / python / simgrid_python.cpp
index 4b09a553cef34c3ece028a7ab4948ea32a9305f1..e1c42ed8b4a95fc2febf2febe6fcba36aa5367b7 100644 (file)
@@ -103,6 +103,7 @@ PYBIND11_MODULE(simgrid, m)
   py::register_exception<simgrid::StorageFailureException>(m, "StorageFailureException");
   py::register_exception<simgrid::VmFailureException>(m, "VmFailureException");
   py::register_exception<simgrid::CancelException>(m, "CancelException");
+  py::register_exception<simgrid::AssertionError>(m, "AssertionError");
 
   /* this_actor namespace */
   m.def_submodule("this_actor", "Bindings of the s4u::this_actor namespace. See the C++ documentation for details.")
@@ -120,6 +121,16 @@ PYBIND11_MODULE(simgrid, m)
            py::arg("priority") = 1)
       .def("exec_init", py::overload_cast<double>(&simgrid::s4u::this_actor::exec_init),
            py::call_guard<py::gil_scoped_release>())
+      .def("exec_async", py::overload_cast<double>(&simgrid::s4u::this_actor::exec_async),
+           py::call_guard<py::gil_scoped_release>())
+      .def("parallel_execute", &simgrid::s4u::this_actor::parallel_execute,
+           py::call_guard<py::gil_scoped_release>(),
+           "Run a parallel task (requires the 'ptask_L07' model)")
+      .def("exec_init",
+           py::overload_cast<const std::vector<simgrid::s4u::Host*>&, const std::vector<double>&,
+           const std::vector<double>&>  (&simgrid::s4u::this_actor::exec_init),
+           py::call_guard<py::gil_scoped_release>(),
+           "Initiate a parallel task (requires the 'ptask_L07' model)")
       .def("get_host", &simgrid::s4u::this_actor::get_host, "Retrieves host on which the current actor is located")
       .def("set_host", &simgrid::s4u::this_actor::set_host, py::call_guard<py::gil_scoped_release>(),
            "Moves the current actor to another host.", py::arg("dest"))
@@ -216,6 +227,8 @@ PYBIND11_MODULE(simgrid, m)
                              "Retrieve the root netzone, containing all others.")
       .def("netpoint_by_name", &Engine::netpoint_by_name_or_null)
       .def("netzone_by_name", &Engine::netzone_by_name_or_null)
+      .def("set_config", py::overload_cast<const std::string&>(&Engine::set_config),
+           "Change one of SimGrid's configurations")
       .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("mailbox_by_name_or_create", &Engine::mailbox_by_name_or_create,
@@ -657,28 +670,28 @@ PYBIND11_MODULE(simgrid, m)
                              "Check if there is a communication ready to be consumed from a mailbox.")
       .def(
           "put",
-          [](Mailbox* self, py::object data, int size, double timeout) {
+          [](Mailbox* self, py::object data, uint64_t size, double timeout) {
             data.inc_ref();
             self->put(data.ptr(), size, timeout);
           },
           py::call_guard<py::gil_scoped_release>(), "Blocking data transmission with a timeout")
       .def(
           "put",
-          [](Mailbox* self, py::object data, int size) {
+          [](Mailbox* self, py::object data, uint64_t size) {
             data.inc_ref();
             self->put(data.ptr(), size);
           },
           py::call_guard<py::gil_scoped_release>(), "Blocking data transmission")
       .def(
           "put_async",
-          [](Mailbox* self, py::object data, int size) {
+          [](Mailbox* self, py::object data, uint64_t size) {
             data.inc_ref();
             return self->put_async(data.ptr(), size);
           },
           py::call_guard<py::gil_scoped_release>(), "Non-blocking data transmission")
       .def(
           "put_init",
-          [](Mailbox* self, py::object data, int size) {
+          [](Mailbox* self, py::object data, uint64_t size) {
             data.inc_ref();
             return self->put_init(data.ptr(), size);
           },
@@ -837,8 +850,12 @@ PYBIND11_MODULE(simgrid, m)
            "Test whether the execution is terminated.")
       .def("cancel", &simgrid::s4u::Exec::cancel, py::call_guard<py::gil_scoped_release>(), "Cancel that execution.")
       .def("start", &simgrid::s4u::Exec::start, py::call_guard<py::gil_scoped_release>(), "Start that execution.")
+      .def("suspend", &simgrid::s4u::Exec::suspend, py::call_guard<py::gil_scoped_release>(), "Suspend that execution.")
       .def("wait", &simgrid::s4u::Exec::wait, py::call_guard<py::gil_scoped_release>(),
-           "Block until the completion of that execution.");
+           "Block until the completion of that execution.")
+      .def("wait_for", &simgrid::s4u::Exec::wait_for, py::call_guard<py::gil_scoped_release>(),
+           py::arg("timeout"),
+           "Block until the completion of that activity, or raises TimeoutException after the specified timeout.");
 
   /* Class Semaphore */
   py::class_<Semaphore, SemaphorePtr>(m, "Semaphore",