+ std::vector<Link*> filtered_list;
+ for (auto const& kv : pimpl->links_) {
+ Link* l = kv.second->get_iface();
+ if (filter(l))
+ filtered_list.push_back(l);
+ }
+ return filtered_list;
+}
+
+size_t Engine::get_actor_count() const
+{
+ return pimpl->get_actor_count();
+}
+
+std::vector<ActorPtr> Engine::get_all_actors() const
+{
+ std::vector<ActorPtr> actor_list;
+ for (auto const& kv : pimpl->get_actor_list()) {
+ actor_list.push_back(kv.second->get_iface());
+ }
+ return actor_list;
+}
+
+std::vector<ActorPtr> Engine::get_filtered_actors(const std::function<bool(ActorPtr)>& filter) const
+{
+ std::vector<ActorPtr> actor_list;
+ for (auto const& kv : pimpl->get_actor_list()) {
+ if (filter(kv.second->get_iface()))
+ actor_list.push_back(kv.second->get_iface());
+ }
+ return actor_list;
+}
+
+void Engine::run() const
+{
+ /* sealing resources before run: links */
+ for (auto* link : get_all_links())
+ link->seal();
+ /* seal netzone root, recursively seal children netzones, hosts and disks */
+ get_netzone_root()->seal();
+
+ /* Clean IO before the run */
+ fflush(stdout);
+ fflush(stderr);
+