void setReceiver(Actor* process);
/** Return the process declared as permanent receiver, or nullptr if none **/
- Actor& receiver();
+ ActorPtr receiver();
};
using MailboxPtr = Mailbox::Ptr;
}
/** @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());
}
}
mbox->setReceiver(&process->actor());
}
smx_process_t sg_mbox_receiver(sg_mbox_t mbox) {
- return mbox->receiver().getInferior();
+ return mbox->receiver()->getInferior();
}