Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[s4u] Mailbox::receiver return a s4u::ActorPtr
authoradfaure <adrien.faure2@gmail.com>
Mon, 18 Jul 2016 13:23:52 +0000 (15:23 +0200)
committeradfaure <adrien.faure2@gmail.com>
Mon, 18 Jul 2016 13:23:52 +0000 (15:23 +0200)
include/simgrid/s4u/mailbox.hpp
src/s4u/s4u_mailbox.cpp

index 4238ecf..c4a022c 100644 (file)
@@ -61,7 +61,7 @@ public:
   void setReceiver(Actor* process);
 
   /** Return the process declared as permanent receiver, or nullptr if none **/
-  Actor& receiver();
+  ActorPtr receiver();
 };
 
 using MailboxPtr = Mailbox::Ptr;
index d7f4869..ed93710 100644 (file)
@@ -43,8 +43,9 @@ void Mailbox::setReceiver(Actor* actor) {
 }
 
 /** @brief get the receiver (process associated to the mailbox) */
-Actor& Mailbox::receiver() {
-  return pimpl_->permanent_receiver->actor();
+ActorPtr Mailbox::receiver() {
+  if(pimpl_->permanent_receiver == nullptr) return ActorPtr();
+  return ActorPtr(&pimpl_->permanent_receiver->actor());
 }
 
 }
@@ -62,5 +63,5 @@ void sg_mbox_setReceiver(sg_mbox_t mbox, smx_process_t process) {
   mbox->setReceiver(&process->actor());
 }
 smx_process_t sg_mbox_receiver(sg_mbox_t mbox) {
-  return mbox->receiver().getInferior();
+  return mbox->receiver()->getInferior();
 }