Commit ebc206ea authored by Dominik Charousset's avatar Dominik Charousset

announce_actor_{type_impl => factory}

parent 85920019
...@@ -68,7 +68,7 @@ spawn_fun make_spawn_fun(F fun) { ...@@ -68,7 +68,7 @@ spawn_fun make_spawn_fun(F fun) {
dyn_spawn_prepare_message<impl>(msg, ptr.get(), tk); dyn_spawn_prepare_message<impl>(msg, ptr.get(), tk);
ptr->initial_behavior_fac([=](local_actor*) -> behavior { ptr->initial_behavior_fac([=](local_actor*) -> behavior {
auto res = const_cast<message&>(msg).apply(fun); auto res = const_cast<message&>(msg).apply(fun);
if (res && res->size() > 0 && res->template match_element<behavior_t>(0)) if (res && res->size() > 0 && res->template match_element<behavior_t>(0))
return std::move(res->template get_as_mutable<behavior_t>(0).unbox()); return std::move(res->template get_as_mutable<behavior_t>(0).unbox());
return {}; return {};
}); });
...@@ -106,16 +106,16 @@ spawn_fun make_spawn_fun() { ...@@ -106,16 +106,16 @@ spawn_fun make_spawn_fun() {
actor spawn_announce_actor_type_server(); actor spawn_announce_actor_type_server();
void announce_actor_type_impl(std::string&& name, spawn_fun f); void announce_actor_factory(std::string name, spawn_fun f);
template <class F> template <class F>
void announce_actor_type(std::string name, F fun) { void announce_actor_type(std::string name, F fun) {
announce_actor_type_impl(std::move(name), make_spawn_fun(fun)); announce_actor_factory(std::move(name), make_spawn_fun(fun));
} }
template <class T, class... Ts> template <class T, class... Ts>
void announce_actor_type(std::string name) { void announce_actor_type(std::string name) {
announce_actor_type_impl(std::move(name), make_spawn_fun<T, Ts...>()); announce_actor_factory(std::move(name), make_spawn_fun<T, Ts...>());
} }
} // namespace experimental } // namespace experimental
......
...@@ -70,7 +70,7 @@ actor spawn_announce_actor_type_server() { ...@@ -70,7 +70,7 @@ actor spawn_announce_actor_type_server() {
return spawn<hidden + lazy_init>(announce_actor_type_server); return spawn<hidden + lazy_init>(announce_actor_type_server);
} }
void announce_actor_type_impl(std::string&& name, spawn_fun f) { void announce_actor_factory(std::string name, spawn_fun f) {
auto registry = detail::singletons::get_actor_registry(); auto registry = detail::singletons::get_actor_registry();
auto server = registry->get_named(atom("SpawnServ")); auto server = registry->get_named(atom("SpawnServ"));
anon_send(server, add_atom::value, std::move(name), std::move(f)); anon_send(server, add_atom::value, std::move(name), std::move(f));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment