std::vector<Link*> get_all_links();
std::vector<Link*> get_filtered_links(std::function<bool(Link*)> filter);
+ size_t get_actor_count();
+ std::vector<ActorPtr> get_all_actors();
+ std::vector<ActorPtr> get_filtered_actors(std::function<bool(ActorPtr)> filter);
+
size_t get_storage_count();
std::vector<Storage*> get_all_storages();
simgrid::s4u::Storage* storage_by_name(std::string name);
#include "simgrid/s4u/NetZone.hpp"
#include "simgrid/s4u/Storage.hpp"
#include "simgrid/simix.h"
+#include "src/simix/smx_private.hpp" // For access to simix_global->process_list
#include "src/instr/instr_private.hpp"
#include "src/kernel/EngineImpl.hpp"
#include "src/surf/network_interface.hpp"
return filtered_list;
}
+size_t Engine::get_actor_count()
+{
+ return simix_global->process_list.size();
+}
+
+std::vector<ActorPtr> Engine::get_all_actors()
+{
+ std::vector<ActorPtr> actor_list;
+ actor_list.push_back(simgrid::s4u::Actor::self());
+ for (auto& kv : simix_global->process_list) {
+ actor_list.push_back(kv.second->iface());
+ }
+ return actor_list;
+}
+
+std::vector<ActorPtr> Engine::get_filtered_actors(std::function<bool(ActorPtr)> filter)
+{
+ std::vector<ActorPtr> actor_list;
+ for (auto& kv : simix_global->process_list) {
+ if (filter(kv.second->iface()))
+ actor_list.push_back(kv.second->iface());
+ }
+ return actor_list;
+}
+
void Engine::run()
{
if (MC_is_active()) {