- virtual void get_graph(const s_xbt_graph_t* graph, std::map<std::string, xbt_node_t>* nodes,
- std::map<std::string, xbt_edge_t>* edges) = 0;
+ /** @brief Similar to get_global_route but get the NetZones traversed by route */
+ static void get_global_route_with_netzones(routing::NetPoint* src, routing::NetPoint* dst,
+ /* OUT */ std::vector<resource::LinkImpl*>& links, double* latency,
+ std::unordered_set<NetZoneImpl*>& netzones);
+
+ virtual void get_graph(const s_xbt_graph_t* graph, std::map<std::string, xbt_node_t, std::less<>>* nodes,
+ std::map<std::string, xbt_edge_t, std::less<>>* edges) = 0;
+
+private:
+ RoutingMode hierarchy_ = RoutingMode::base;
+ std::shared_ptr<resource::NetworkModel> network_model_;
+ std::shared_ptr<resource::CpuModel> cpu_model_vm_;
+ std::shared_ptr<resource::CpuModel> cpu_model_pm_;
+ std::shared_ptr<resource::DiskModel> disk_model_;
+ std::shared_ptr<simgrid::surf::HostModel> host_model_;
+ /** @brief Perform sealing procedure for derived classes, if necessary */
+ virtual void do_seal()
+ { /* obviously nothing to do by default */
+ }
+ void add_child(NetZoneImpl* new_zone);