diff options
author | Josh Blum | 2013-06-06 11:55:53 -0700 |
---|---|---|
committer | Josh Blum | 2013-06-06 11:55:53 -0700 |
commit | 4f03a5c6264ba3cd888454360f4c6819fa38023d (patch) | |
tree | 080e9d41148ac911b745009c869f9da7a0475c4d /lib/element_impl.hpp | |
parent | 43c7ef3e7807ad3035a2882d237b0441e6102817 (diff) | |
download | sandhi-4f03a5c6264ba3cd888454360f4c6819fa38023d.tar.gz sandhi-4f03a5c6264ba3cd888454360f4c6819fa38023d.tar.bz2 sandhi-4f03a5c6264ba3cd888454360f4c6819fa38023d.zip |
gras: changes for actor in worker Apology commit
Diffstat (limited to 'lib/element_impl.hpp')
-rw-r--r-- | lib/element_impl.hpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/element_impl.hpp b/lib/element_impl.hpp index 4e75375..ce274f3 100644 --- a/lib/element_impl.hpp +++ b/lib/element_impl.hpp @@ -4,6 +4,7 @@ #define INCLUDED_LIBGRAS_ELEMENT_IMPL_HPP #include <gras_impl/block_actor.hpp> +#include <Apology/Worker.hpp> #include <Apology/Topology.hpp> #include <Apology/Executor.hpp> #include <gras/element.hpp> @@ -42,6 +43,7 @@ struct ElementImpl std::map<std::string, Element> children; //things may be in this element + boost::shared_ptr<Apology::Worker> worker; boost::shared_ptr<Apology::Topology> topology; boost::shared_ptr<Apology::Executor> executor; boost::shared_ptr<BlockActor> block; @@ -49,19 +51,21 @@ struct ElementImpl ThreadPool thread_pool; Apology::Base *get_elem(void) const { - if (block) return block.get(); - return topology.get(); + if (worker) return worker.get(); + if (topology) return topology.get(); + else throw std::runtime_error("ElementImpl::get_elem fail"); } template <typename MessageType> void bcast_prio_msg(const MessageType &msg) { Theron::Receiver receiver; - BOOST_FOREACH(Apology::Worker *worker, this->executor->get_workers()) + BOOST_FOREACH(Apology::Worker *w, this->executor->get_workers()) { + BlockActor *actor = dynamic_cast<BlockActor *>(w->get_actor()); MessageType message = msg; - message.prio_token = dynamic_cast<BlockActor *>(worker)->prio_token; - worker->GetFramework().Send(message, receiver.GetAddress(), worker->GetAddress()); + message.prio_token = actor->prio_token; + actor->GetFramework().Send(message, receiver.GetAddress(), actor->GetAddress()); } size_t outstandingCount(this->executor->get_workers().size()); while (outstandingCount != 0) |