X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/237fd22b56db7d1c67360c37559ce3aab16a002d..refs/tags/v3.31:/src/s4u/s4u_Mailbox.cpp diff --git a/src/s4u/s4u_Mailbox.cpp b/src/s4u/s4u_Mailbox.cpp index 2fcd87fe55..a0c99e5832 100644 --- a/src/s4u/s4u_Mailbox.cpp +++ b/src/s4u/s4u_Mailbox.cpp @@ -1,14 +1,13 @@ -/* 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. */ -#include "simgrid/s4u/Comm.hpp" -#include "simgrid/s4u/Engine.hpp" -#include "simgrid/s4u/Mailbox.hpp" -#include "src/kernel/activity/MailboxImpl.hpp" - #include +#include +#include + +#include "src/kernel/activity/MailboxImpl.hpp" XBT_LOG_EXTERNAL_CATEGORY(s4u); XBT_LOG_NEW_DEFAULT_SUBCATEGORY(s4u_channel, s4u, "S4U Communication Mailboxes"); @@ -59,10 +58,10 @@ bool Mailbox::ready() const { bool comm_ready = false; if (not pimpl_->empty()) { - comm_ready = pimpl_->front()->state_ == kernel::activity::State::DONE; + comm_ready = pimpl_->front()->get_state() == kernel::activity::State::DONE; } else if (pimpl_->is_permanent() && pimpl_->has_some_done_comm()) { - comm_ready = pimpl_->done_front()->state_ == kernel::activity::State::DONE; + comm_ready = pimpl_->done_front()->get_state() == kernel::activity::State::DONE; } return comm_ready; } @@ -74,7 +73,7 @@ kernel::activity::CommImplPtr Mailbox::front() const void Mailbox::set_receiver(ActorPtr actor) { - kernel::actor::simcall([this, actor]() { this->pimpl_->set_receiver(actor); }); + kernel::actor::simcall_answered([this, actor]() { this->pimpl_->set_receiver(actor); }); } /** @brief get the receiver (process associated to the mailbox) */ @@ -89,7 +88,7 @@ CommPtr Mailbox::put_init() { CommPtr res(new Comm()); res->sender_ = kernel::actor::ActorImpl::self(); - res->mailbox_ = this; + res->set_mailbox(this); return res; } @@ -124,16 +123,16 @@ void Mailbox::put(void* payload, uint64_t simulated_size_in_bytes, double timeou CommPtr Mailbox::get_init() { - CommPtr res(new Comm()); + auto res = CommPtr(new Comm())->set_mailbox(this); res->receiver_ = kernel::actor::ActorImpl::self(); - res->mailbox_ = this; return res; } kernel::activity::ActivityImplPtr -Mailbox::iprobe(int type, bool (*match_fun)(void*, void*, kernel::activity::CommImpl*), void* data) +Mailbox::iprobe(int type, const std::function& match_fun, void* data) { - return kernel::actor::simcall([this, type, match_fun, data] { return pimpl_->iprobe(type, match_fun, data); }); + return kernel::actor::simcall_answered( + [this, type, &match_fun, data] { return pimpl_->iprobe(type, match_fun, data); }); } } // namespace s4u } // namespace simgrid