void forwarding_actor_proxy::enqueue(mailbox_element_ptr what, execution_unit*) { CAF_PUSH_AID(0); CAF_ASSERT(what); forward_msg(std::move(what->sender), what->mid, what->move_content_to_message(), &what->stages); }
void blocking_actor::enqueue(mailbox_element_ptr ptr, execution_unit*) { auto mid = ptr->mid; auto src = ptr->sender; // returns false if mailbox has been closed if (!mailbox().synchronized_enqueue(mtx_, cv_, ptr.release())) { if (mid.is_request()) { detail::sync_request_bouncer srb{exit_reason()}; srb(src, mid); } } }
void blocking_actor::enqueue(mailbox_element_ptr ptr, execution_unit*) { CAF_ASSERT(ptr != nullptr); CAF_ASSERT(getf(is_blocking_flag)); CAF_LOG_TRACE(CAF_ARG(*ptr)); CAF_LOG_SEND_EVENT(ptr); auto mid = ptr->mid; auto src = ptr->sender; // returns false if mailbox has been closed if (!mailbox().synchronized_enqueue(mtx_, cv_, ptr.release())) { CAF_LOG_REJECT_EVENT(); if (mid.is_request()) { detail::sync_request_bouncer srb{exit_reason()}; srb(src, mid); } } else { CAF_LOG_ACCEPT_EVENT(); } }