A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #190 from Takishipp/clean_events
[simgrid.git]
/
src
/
kernel
/
activity
/
MailboxImpl.cpp
diff --git
a/src/kernel/activity/MailboxImpl.cpp
b/src/kernel/activity/MailboxImpl.cpp
index
86b2e24
..
3f8cedc
100644
(file)
--- a/
src/kernel/activity/MailboxImpl.cpp
+++ b/
src/kernel/activity/MailboxImpl.cpp
@@
-4,7
+4,8
@@
* under the terms of the license (GNU LGPL) which comes with this package. */
#include "src/kernel/activity/MailboxImpl.hpp"
* under the terms of the license (GNU LGPL) which comes with this package. */
#include "src/kernel/activity/MailboxImpl.hpp"
-#include "src/kernel/activity/SynchroComm.hpp"
+
+#include "src/kernel/activity/CommImpl.hpp"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_mailbox, simix, "Mailbox implementation");
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_mailbox, simix, "Mailbox implementation");
@@
-52,10
+53,10
@@
void MailboxImpl::setReceiver(s4u::ActorPtr actor)
/** @brief Pushes a communication activity into a mailbox
* @param comm What to add
*/
/** @brief Pushes a communication activity into a mailbox
* @param comm What to add
*/
-void MailboxImpl::push(activity::Comm
*
comm)
+void MailboxImpl::push(activity::Comm
ImplPtr
comm)
{
{
- this->comm_queue.push_back(comm);
comm->mbox = this;
comm->mbox = this;
+ this->comm_queue.push_back(std::move(comm));
}
/** @brief Removes a communication activity from a mailbox
}
/** @brief Removes a communication activity from a mailbox
@@
-63,15
+64,18
@@
void MailboxImpl::push(activity::Comm* comm)
*/
void MailboxImpl::remove(smx_activity_t activity)
{
*/
void MailboxImpl::remove(smx_activity_t activity)
{
- simgrid::kernel::activity::Comm* comm = static_cast<simgrid::kernel::activity::Comm*>(activity);
+ simgrid::kernel::activity::CommImplPtr comm =
+ boost::static_pointer_cast<simgrid::kernel::activity::CommImpl>(activity);
+ xbt_assert(comm->mbox == this, "Comm %p is in mailbox %s, not mailbox %s", comm.get(),
+ (comm->mbox ? comm->mbox->name_ : "(null)"), this->name_);
comm->mbox = nullptr;
for (auto it = this->comm_queue.begin(); it != this->comm_queue.end(); it++)
if (*it == comm) {
this->comm_queue.erase(it);
return;
}
comm->mbox = nullptr;
for (auto it = this->comm_queue.begin(); it != this->comm_queue.end(); it++)
if (*it == comm) {
this->comm_queue.erase(it);
return;
}
- xbt_die("C
annot remove the comm %p that is not part of the mailbox %s", comm
, this->name_);
+ xbt_die("C
omm %p not found in mailbox %s", comm.get()
, this->name_);
}
}
}
}
}
}