Commit 514f681e authored by Dominik Charousset's avatar Dominik Charousset

Add broker ctor allowing to skip singleton getter

parent 858d69dc
...@@ -50,6 +50,8 @@ class basp_broker : public broker, public actor_namespace::backend { ...@@ -50,6 +50,8 @@ class basp_broker : public broker, public actor_namespace::backend {
basp_broker(); basp_broker();
basp_broker(middleman& parent_ref);
behavior make_behavior() override; behavior make_behavior() override;
void add_published_actor(accept_handle hdl, void add_published_actor(accept_handle hdl,
......
...@@ -308,6 +308,8 @@ class broker : public extend<local_actor>:: ...@@ -308,6 +308,8 @@ class broker : public extend<local_actor>::
protected: protected:
broker(); broker();
broker(middleman& parent_ref);
void cleanup(uint32_t reason); void cleanup(uint32_t reason);
virtual behavior make_behavior() = 0; virtual behavior make_behavior() = 0;
......
...@@ -61,7 +61,7 @@ class middleman : public detail::abstract_singleton { ...@@ -61,7 +61,7 @@ class middleman : public detail::abstract_singleton {
if (i != m_named_brokers.end()) { if (i != m_named_brokers.end()) {
return static_cast<Impl*>(i->second.get()); return static_cast<Impl*>(i->second.get());
} }
intrusive_ptr<Impl> result{new Impl}; intrusive_ptr<Impl> result{new Impl(*this)};
result->launch(true, false, nullptr); result->launch(true, false, nullptr);
m_named_brokers.insert(std::make_pair(name, result)); m_named_brokers.insert(std::make_pair(name, result));
return result; return result;
......
...@@ -46,6 +46,12 @@ basp_broker::basp_broker() : m_namespace(*this) { ...@@ -46,6 +46,12 @@ basp_broker::basp_broker() : m_namespace(*this) {
CAF_LOG_DEBUG("BASP broker started: " << to_string(node())); CAF_LOG_DEBUG("BASP broker started: " << to_string(node()));
} }
basp_broker::basp_broker(middleman& ref) : broker(ref), m_namespace(*this) {
m_meta_msg = uniform_typeid<message>();
m_meta_id_type = uniform_typeid<node_id>();
CAF_LOG_DEBUG("BASP broker started: " << to_string(node()));
}
behavior basp_broker::make_behavior() { behavior basp_broker::make_behavior() {
return { return {
// received from underlying broker implementation // received from underlying broker implementation
......
...@@ -260,6 +260,10 @@ broker::broker() : m_mm(*middleman::instance()) { ...@@ -260,6 +260,10 @@ broker::broker() : m_mm(*middleman::instance()) {
// nop // nop
} }
broker::broker(middleman& ptr) : m_mm(ptr) {
// nop
}
void broker::cleanup(uint32_t reason) { void broker::cleanup(uint32_t reason) {
CAF_LOG_TRACE(CAF_ARG(reason)); CAF_LOG_TRACE(CAF_ARG(reason));
close_all(); close_all();
......
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