- duration = MAX(duration, sg_surf_precision);
-
- XBT_IN("(%s,%g)", getName(), duration);
- CpuCas01Action *action = new CpuCas01Action(getModel(), 1.0, isOff(),
- m_speedScale * m_speedPeak, getConstraint());
-
-
- // FIXME: sleep variables should not consume 1.0 in lmm_expand
- action->m_maxDuration = duration;
- action->m_suspended = 2;
- if (duration == NO_MAX_DURATION) {
- /* Move to the *end* of the corresponding action set. This convention
- is used to speed up update_resource_state */
- action->getStateSet()->erase(action->getStateSet()->iterator_to(*action));
- action->p_stateSet = static_cast<CpuCas01Model*>(getModel())->p_cpuRunningActionSetThatDoesNotNeedBeingChecked;
- action->getStateSet()->push_back(*action);
- }
-
- lmm_update_variable_weight(getModel()->getMaxminSystem(),
- action->getVariable(), 0.0);
- if (getModel()->getUpdateMechanism() == UM_LAZY) { // remove action from the heap
- action->heapRemove(getModel()->getActionHeap());
- // this is necessary for a variable with weight 0 since such
- // variables are ignored in lmm and we need to set its max_duration
- // correctly at the next call to share_resources
- getModel()->getModifiedSet()->push_front(*action);
+ duration = std::max(duration, sg_surf_precision);
+
+ XBT_IN("(%s,%g)", get_cname(), duration);
+ CpuCas01Action* action =
+ new CpuCas01Action(get_model(), 1.0, not is_on(), speed_.scale * speed_.peak, get_constraint());
+
+ // FIXME: sleep variables should not consume 1.0 in System::expand()
+ action->set_max_duration(duration);
+ action->set_suspend_state(Action::SuspendStates::SLEEPING);
+ if (duration == NO_MAX_DURATION)
+ action->set_state(Action::State::IGNORED);
+
+ get_model()->get_maxmin_system()->update_variable_weight(action->get_variable(), 0.0);
+ if (get_model()->get_update_algorithm() == Model::UpdateAlgo::LAZY) { // remove action from the heap
+ get_model()->get_action_heap().remove(action);
+ // this is necessary for a variable with weight 0 since such variables are ignored in lmm and we need to set its
+ // max_duration correctly at the next call to share_resources
+ get_model()->get_modified_set()->push_front(*action);