class XBT_PUBLIC Engine {
public:
/** Constructor, taking the command line parameters of your main function */
- Engine(int* argc, char** argv);
+ explicit Engine(int* argc, char** argv);
/** Currently, only one instance is allowed to exist. This is why you can't copy or move it */
Engine(const Engine&) = delete;
Engine(Engine&&) = delete;
protected:
friend s4u::Host;
+ friend s4u::Link;
friend s4u::Storage;
friend kernel::routing::NetPoint;
friend kernel::routing::NetZoneImpl;
+ friend kernel::resource::LinkImpl;
void host_register(std::string name, simgrid::s4u::Host* host);
void host_unregister(std::string name);
+ void link_register(std::string name, simgrid::s4u::Link* link);
+ void link_unregister(std::string name);
void storage_register(std::string name, simgrid::s4u::Storage* storage);
void storage_unregister(std::string name);
void netpoint_register(simgrid::kernel::routing::NetPoint* card);
size_t get_link_count();
std::vector<Link*> get_all_links();
+ std::vector<Link*> get_filtered_links(std::function<bool(Link*)> filter);
+ simgrid::s4u::Link* link_by_name(std::string name);
+ simgrid::s4u::Link* link_by_name_or_null(std::string name);
+
+ 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::NetZone* netzone_by_name_or_null(const char* name);
/** @brief Retrieves all netzones of the type indicated by the template argument */
- template <class T> std::vector<T*> filter_netzones_by_type()
+ template <class T> std::vector<T*> get_filtered_netzones()
{
std::vector<T*> res;
- filter_netzones_by_type_recursive(get_netzone_root(), &res);
+ get_filtered_netzones_recursive(get_netzone_root(), &res);
return res;
}
XBT_ATTRIB_DEPRECATED_v323("Please use Engine::filter_netzones_by_type()") void getNetzoneByType(
std::vector<T*>* whereto)
{
- filter_netzones_by_type_recursive(get_netzone_root(), whereto);
+ get_filtered_netzones_recursive(get_netzone_root(), whereto);
}
XBT_ATTRIB_DEPRECATED_v323("Please use Engine::get_instance()") static s4u::Engine* getInstance()
/** Callback fired when the time cannot jump because of inter-actors deadlock */
extern XBT_PUBLIC xbt::signal<void(void)> on_deadlock;
-template <class T> XBT_PRIVATE void filter_netzones_by_type_recursive(s4u::NetZone* current, std::vector<T*>* whereto)
+template <class T> XBT_PRIVATE void get_filtered_netzones_recursive(s4u::NetZone* current, std::vector<T*>* whereto)
{
- for (auto const& elem : *(current->getChildren())) {
- filter_netzones_by_type_recursive(elem, whereto);
+ for (auto const& elem : *(current->get_children())) {
+ get_filtered_netzones_recursive(elem, whereto);
if (elem == dynamic_cast<T*>(elem))
whereto->push_back(dynamic_cast<T*>(elem));
}