void actor_registry::put_impl(atom_value key, strong_actor_ptr value) { if (value) value->get()->attach_functor([=] { system_.registry().put_impl(key, nullptr); }); exclusive_guard guard{named_entries_mtx_}; named_entries_.emplace(key, std::move(value)); }
void actor_registry::put_impl(actor_id key, strong_actor_ptr val) { CAF_LOG_TRACE(CAF_ARG(key)); if (!val) return; { // lifetime scope of guard exclusive_guard guard(instances_mtx_); if (!entries_.emplace(key, val).second) return; } // attach functor without lock CAF_LOG_INFO("added actor:" << CAF_ARG(key)); actor_registry* reg = this; val->get()->attach_functor([key, reg]() { reg->erase(key); }); }
bool operator==(const abstract_actor* x, const strong_actor_ptr& y) { return actor_control_block::from(x) == y.get(); }
bool operator==(const strong_actor_ptr& x, const abstract_actor* y) { return x.get() == actor_control_block::from(y); }
intptr_t actor::compare(const strong_actor_ptr& x) const noexcept { return actor_addr::compare(ptr_.get(), x.get()); }