message_id sync_send_impl(message_priority mp, const Handle& dh, Ts&&... xs) { if (! dh) { throw std::invalid_argument("cannot sync_send to invalid_actor"); } auto req_id = new_request_id(mp); send_impl(req_id, actor_cast<abstract_channel*>(dh), std::forward<Ts>(xs)...); return req_id.response_id(); }
void send(const typed_actor<Sigs...>& dest, Ts&&... xs) { using token = detail::type_list< typename detail::implicit_conversions< typename std::decay<Ts>::type >::type...>; token tk; check_typed_input(dest, tk); send_impl(message_id::make(), actor_cast<abstract_channel*>(dest), std::forward<Ts>(xs)...); }
void send(message_priority mp, const channel& dest, Ts&&... xs) { static_assert(sizeof...(Ts) > 0, "sizeof...(Ts) == 0"); send_impl(message_id::make(mp), actor_cast<abstract_channel*>(dest), std::forward<Ts>(xs)...); }
void send(const channel& dest, Ts&&... xs) { send_impl(message_id::make(), actor_cast<abstract_channel*>(dest), std::forward<Ts>(xs)...); }
/// Sends result produced by sender to addressee object. void send(LResult const& ret) const { send_impl(ret); }
void send(Recver const& recver, Match type, A1 const& a1, A2 const& a2, A3 const& a3, A4 const& a4, A5 const& a5) { message m(to_match(type)); m << a1 << a2 << a3 << a4 << a5; send_impl(get_actor_ref(), recver, m); }
void send(Recver const& recver, Match type, A1 const& a1, A2 const& a2) { message m(to_match(type)); m << a1 << a2; send_impl(get_actor_ref(), recver, m); }
void send(Recver const& recver, Match type) { message m(to_match(type)); send_impl(get_actor_ref(), recver, m); }
void send(Recver const& recver) { message m; send_impl(get_actor_ref(), recver, m); }