LinkImpl* NetworkCm02Model::create_link(const std::string& name, const std::vector<double>& bandwidths,
s4u::Link::SharingPolicy policy)
{
- if (policy == s4u::Link::SharingPolicy::WIFI)
- return (new NetworkWifiLink(name, bandwidths, get_maxmin_system()))->set_model(this);
+ LinkImpl* link;
+ if (policy == s4u::Link::SharingPolicy::WIFI) {
+ link = new NetworkWifiLink(name, bandwidths, get_maxmin_system());
+ } else {
+ xbt_assert(bandwidths.size() == 1, "Non-WIFI links must use only 1 bandwidth.");
+ link = new NetworkCm02Link(name, bandwidths[0], policy, get_maxmin_system());
+ }
- xbt_assert(bandwidths.size() == 1, "Non-WIFI links must use only 1 bandwidth.");
- return (new NetworkCm02Link(name, bandwidths[0], policy, get_maxmin_system()))->set_model(this);
+ link->set_model(this);
+ return link;
}
void NetworkCm02Model::update_actions_state_lazy(double now, double /*delta*/)
s4u::Link::SharingPolicy policy)
{
xbt_assert(bandwidths.size() == 1, "ns-3 links must use only 1 bandwidth.");
- return new LinkNS3(name, bandwidths[0], policy);
+ auto link = new LinkNS3(name, bandwidths[0], policy);
+ link->set_model(this);
+ return link;
}
Action* NetworkNS3Model::communicate(s4u::Host* src, s4u::Host* dst, double size, double rate)
s4u::Link::SharingPolicy policy)
{
xbt_assert(bandwidths.size() == 1, "Non WIFI link must have only 1 bandwidth.");
- return new LinkL07(name, bandwidths[0], policy, get_maxmin_system());
+ auto link = new LinkL07(name, bandwidths[0], policy, get_maxmin_system());
+ link->set_model(this);
+ return link;
}
/************