if (optim == "Full") {
setUpdateMechanism(UM_FULL);
} else if (optim == "Lazy") {
+ xbt_assert(select || xbt_cfg_is_default_value("network/maxmin-selective-update"),
+ "You cannot disable network selective update when using the lazy update mechanism");
select = true;
setUpdateMechanism(UM_LAZY);
- xbt_assert(select || (xbt_cfg_is_default_value("network/maxmin-selective-update")),
- "You cannot disable selective update when using the lazy update mechanism");
} else {
xbt_die("Unsupported optimization (%s) for this model. Accepted: Full, Lazy.", optim.c_str());
}
return new NetworkCm02Link(this, name, bandwidth, latency, policy, maxmin_system_);
}
-void NetworkCm02Model::updateActionsStateLazy(double now, double /*delta*/)
+void NetworkCm02Model::update_actions_state_lazy(double now, double /*delta*/)
{
while (not actionHeapIsEmpty() && double_equals(actionHeapTopDate(), now, sg_surf_precision)) {
if (action->get_type() == kernel::resource::Action::Type::LATENCY) {
XBT_DEBUG("Latency paid for action %p. Activating", action);
maxmin_system_->update_variable_weight(action->get_variable(), action->weight_);
- action->heapRemove(getActionHeap());
+ action->heapRemove();
action->set_last_update();
// if I am wearing a max_duration or normal hat
// assume that flows that reached max_duration have remaining of 0
XBT_DEBUG("Action %p finished", action);
action->finish(kernel::resource::Action::State::done);
- action->heapRemove(getActionHeap());
+ action->heapRemove();
}
}
}
-
-void NetworkCm02Model::updateActionsStateFull(double now, double delta)
+void NetworkCm02Model::update_actions_state_full(double now, double delta)
{
- for (auto it = std::begin(*getRunningActionSet()); it != std::end(*getRunningActionSet());) {
+ for (auto it = std::begin(*get_running_action_set()); it != std::end(*get_running_action_set());) {
NetworkCm02Action& action = static_cast<NetworkCm02Action&>(*it);
++it; // increment iterator here since the following calls to action.finish() may invalidate it
XBT_DEBUG("Something happened to action %p", &action);
if (getUpdateMechanism() == UM_LAZY) {
// add to the heap the event when the latency is payed
XBT_DEBUG("Added action (%p) one latency event at date %f", action, action->latency_ + action->get_last_update());
- action->heapInsert(getActionHeap(), action->latency_ + action->get_last_update(),
- route.empty() ? kernel::resource::Action::Type::NORMAL
- : kernel::resource::Action::Type::LATENCY);
+ action->heapInsert(action->latency_ + action->get_last_update(), route.empty()
+ ? kernel::resource::Action::Type::NORMAL
+ : kernel::resource::Action::Type::LATENCY);
}
} else
action->set_variable(maxmin_system_->variable_new(action, 1.0, -1.0, constraints_per_variable));
{
bandwidth_.peak = value;
- model()->getMaxminSystem()->update_constraint_bound(constraint(),
- sg_bandwidth_factor * (bandwidth_.peak * bandwidth_.scale));
+ model()->get_maxmin_system()->update_constraint_bound(constraint(),
+ sg_bandwidth_factor * (bandwidth_.peak * bandwidth_.scale));
TRACE_surf_link_set_bandwidth(surf_get_clock(), getCname(), sg_bandwidth_factor * bandwidth_.peak * bandwidth_.scale);
if (sg_weight_S_parameter > 0) {
NetworkCm02Action* action = static_cast<NetworkCm02Action*>(var->get_id());
action->weight_ += delta;
if (not action->is_suspended())
- model()->getMaxminSystem()->update_variable_weight(action->get_variable(), action->weight_);
+ model()->get_maxmin_system()->update_variable_weight(action->get_variable(), action->weight_);
}
}
}
action->latCurrent_ += delta;
action->weight_ += delta;
if (action->rate_ < 0)
- model()->getMaxminSystem()->update_variable_bound(action->get_variable(),
- sg_tcp_gamma / (2.0 * action->latCurrent_));
+ model()->get_maxmin_system()->update_variable_bound(action->get_variable(),
+ sg_tcp_gamma / (2.0 * action->latCurrent_));
else {
- model()->getMaxminSystem()->update_variable_bound(
+ model()->get_maxmin_system()->update_variable_bound(
action->get_variable(), std::min(action->rate_, sg_tcp_gamma / (2.0 * action->latCurrent_)));
if (action->rate_ < sg_tcp_gamma / (2.0 * action->latCurrent_)) {
}
}
if (not action->is_suspended())
- model()->getMaxminSystem()->update_variable_weight(action->get_variable(), action->weight_);
+ model()->get_maxmin_system()->update_variable_weight(action->get_variable(), action->weight_);
}
}
if ((get_remains_no_update() <= 0 && (get_variable()->get_weight() > 0)) ||
((max_duration > NO_MAX_DURATION) && (max_duration <= 0))) {
finish(Action::State::done);
- heapRemove(get_model()->getActionHeap());
+ heapRemove();
}
set_last_update();