- size_t get_actor_count();
- void add_actor(kernel::actor::ActorImpl* actor) { actor_list_.push_back(*actor); }
- void remove_actor(kernel::actor::ActorImpl* actor) { xbt::intrusive_erase(actor_list_, *actor); }
- void add_actor_at_boot(kernel::actor::ProcessArg* arg) { actors_at_boot_.emplace_back(arg); }
-
- typedef boost::intrusive::list<
- kernel::actor::ActorImpl,
- boost::intrusive::member_hook<kernel::actor::ActorImpl, boost::intrusive::list_member_hook<>,
- &kernel::actor::ActorImpl::host_actor_list_hook>>
- ActorList;
-
- // FIXME: make these private
- ActorList actor_list_;
+ size_t get_actor_count() const;
+ void add_actor(actor::ActorImpl* actor) { actor_list_.push_back(*actor); }
+ void remove_actor(actor::ActorImpl* actor) { xbt::intrusive_erase(actor_list_, *actor); }
+ void add_actor_at_boot(actor::ProcessArg* arg) { actors_at_boot_.emplace_back(arg); }
+
+ void seal();
+
+ template <class F> void foreach_actor(F function)
+ {
+ for (auto& actor : actor_list_)
+ function(actor);
+ }