- py::class_<simgrid::s4u::Mailbox, std::unique_ptr<Mailbox, py::nodelete>>(
- m, "Mailbox", "Mailbox, see :ref:`class s4u::Mailbox <API_s4u_Mailbox>`")
- .def("__str__", [](const Mailbox* self) { return std::string("Mailbox(") + self->get_cname() + ")"; },
- "Textual representation of the Mailbox`")
- .def("by_name", &Mailbox::by_name, py::call_guard<GilScopedRelease>(),
- "Retrieve a Mailbox from its name, see :cpp:func:`simgrid::s4u::Mailbox::by_name()`")
- .def_property_readonly("name",
- [](const Mailbox* self) {
- return std::string(self->get_name().c_str()); // Convert from xbt::string because of MC
- },
- "The name of that mailbox, see :cpp:func:`simgrid::s4u::Mailbox::get_name()`")
- .def("put",
- [](Mailbox* self, py::object data, int size) {
- data.inc_ref();
- self->put(data.ptr(), size);
- },
- py::call_guard<GilScopedRelease>(),
- "Blocking data transmission, see :cpp:func:`void simgrid::s4u::Mailbox::put(void*, uint64_t)`")
- .def("put_async",
- [](Mailbox* self, py::object data, int size) {
- data.inc_ref();
- return self->put_async(data.ptr(), size);
- },
- py::call_guard<GilScopedRelease>(),
- "Non-blocking data transmission, see :cpp:func:`void simgrid::s4u::Mailbox::put_async(void*, uint64_t)`")
- .def("get",
- [](Mailbox* self) {
- py::object data = pybind11::reinterpret_steal<py::object>(static_cast<PyObject*>(self->get()));
- // data.dec_ref(); // FIXME: why does it break python-actor-create?
- return data;
- },
- py::call_guard<GilScopedRelease>(),
- "Blocking data reception, see :cpp:func:`void* simgrid::s4u::Mailbox::get()`");
+ py::class_<simgrid::s4u::Mailbox, std::unique_ptr<Mailbox, py::nodelete>>(m, "Mailbox", "Mailbox")
+ .def(
+ "__str__", [](const Mailbox* self) { return std::string("Mailbox(") + self->get_cname() + ")"; },
+ "Textual representation of the Mailbox`")
+ .def("by_name", &Mailbox::by_name, py::call_guard<GilScopedRelease>(), "Retrieve a Mailbox from its name")
+ .def_property_readonly(
+ "name",
+ [](const Mailbox* self) {
+ return std::string(self->get_name().c_str()); // Convert from xbt::string because of MC
+ },
+ "The name of that mailbox")
+ .def(
+ "put",
+ [](Mailbox* self, py::object data, int size) {
+ data.inc_ref();
+ self->put(data.ptr(), size);
+ },
+ py::call_guard<GilScopedRelease>(), "Blocking data transmission")
+ .def(
+ "put_async",
+ [](Mailbox* self, py::object data, int size) {
+ data.inc_ref();
+ return self->put_async(data.ptr(), size);
+ },
+ py::call_guard<GilScopedRelease>(), "Non-blocking data transmission")
+ .def(
+ "get",
+ [](Mailbox* self) {
+ py::object data = pybind11::reinterpret_steal<py::object>(static_cast<PyObject*>(self->get()));
+ // data.dec_ref(); // FIXME: why does it break python-actor-create?
+ return data;
+ },
+ py::call_guard<GilScopedRelease>(), "Blocking data reception")
+ .def("set_receiver",
+ [](Mailbox* self, ActorPtr actor) {
+ self->set_receiver(actor);
+ },
+ py::call_guard<GilScopedRelease>(),
+ "Sets the actor as permanent receiver");