-/* Copyright (c) 2016-2021. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2016-2023. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
#include <map>
#include <string>
#include <unordered_map>
+#include <unordered_set>
#include <utility>
#include <vector>
std::vector<NetZone*> get_children() const;
std::vector<Host*> get_all_hosts() const;
- int get_host_count() const;
+ size_t get_host_count() const;
kernel::routing::NetZoneImpl* get_impl() const { return pimpl_; }
/** @brief Get the netpoint associated to this netzone */
kernel::routing::NetPoint* get_netpoint();
-#ifndef DOXYGEN
- XBT_ATTRIB_DEPRECATED_v331("Please use get_parent()") NetZone* get_father() const;
- XBT_ATTRIB_DEPRECATED_v332("Please use set_parent() to manage NetZone's relationship") NetZone* add_child(
- NetZone* new_zone);
-#endif
-
void extract_xbt_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);
void add_route(kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst, kernel::routing::NetPoint* gw_src,
kernel::routing::NetPoint* gw_dst, const std::vector<LinkInRoute>& link_list, bool symmetrical = true);
-#ifndef DOXYGEN
- XBT_ATTRIB_DEPRECATED_v332(
- "Please use add_route() method which uses s4u::LinkInRoute instead of "
- "LinkImpl") void add_route(kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst,
- kernel::routing::NetPoint* gw_src, kernel::routing::NetPoint* gw_dst,
- const std::vector<kernel::resource::StandardLinkImpl*>& link_list, bool symmetrical);
-
- XBT_ATTRIB_DEPRECATED_v332(
- "Please use add_bypass_route() method which uses s4u::LinkInRoute instead of "
- "LinkImpl") void add_bypass_route(kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst,
- kernel::routing::NetPoint* gw_src, kernel::routing::NetPoint* gw_dst,
- std::vector<kernel::resource::StandardLinkImpl*>& link_list,
- bool /*symmetrical*/);
-#endif
-
void add_bypass_route(kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst,
kernel::routing::NetPoint* gw_src, kernel::routing::NetPoint* gw_dst,
const std::vector<LinkInRoute>& link_list);
-#ifndef DOXYGEN
- /*** Called on each newly created regular route (not on bypass routes) */
- static xbt::signal<void(bool symmetrical, kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst,
- kernel::routing::NetPoint* gw_src, kernel::routing::NetPoint* gw_dst,
- std::vector<kernel::resource::StandardLinkImpl*> const& link_list)>
- on_route_creation; // XBT_ATTRIB_DEPRECATED_v332 : should not be used by users, used by ns3.. if necessary,
- // signal shouldn't use LinkImpl*
-
private:
+#ifndef DOXYGEN
static xbt::signal<void(NetZone const&)> on_creation;
static xbt::signal<void(NetZone const&)> on_seal;
#endif
+
public:
static void on_creation_cb(const std::function<void(NetZone const&)>& cb) { on_creation.connect(cb); }
static void on_seal_cb(const std::function<void(NetZone const&)>& cb) { on_seal.connect(cb); }
s4u::SplitDuplexLink* create_split_duplex_link(const std::string& name, const std::string& bandwidth);
s4u::SplitDuplexLink* create_split_duplex_link(const std::string& name, double bandwidth);
- kernel::resource::NetworkModelIntf* get_network_model() const;
+ kernel::resource::NetworkModel* get_network_model() const;
/**
* @brief Make a router within that NetZone
/** @brief Seal this netzone configuration */
NetZone* seal();
-private:
-#ifndef DOXYGEN
- /** @brief XBT_ATTRIB_DEPRECATED_v332 Auxiliary function to convert types */
- static std::vector<LinkInRoute>
- convert_to_linkInRoute(const std::vector<kernel::resource::StandardLinkImpl*>& link_list);
-#endif
+ void
+ set_latency_factor_cb(std::function<double(double size, const s4u::Host* src, const s4u::Host* dst,
+ const std::vector<s4u::Link*>& /*links*/,
+ const std::unordered_set<s4u::NetZone*>& /*netzones*/)> const& cb) const;
+ void
+ set_bandwidth_factor_cb(std::function<double(double size, const s4u::Host* src, const s4u::Host* dst,
+ const std::vector<s4u::Link*>& /*links*/,
+ const std::unordered_set<s4u::NetZone*>& /*netzones*/)> const& cb) const;
};
// External constructors so that the types (and the types of their content) remain hidden