+bool CpuL07::isUsed(){
+ return lmm_constraint_used(getModel()->getMaxminSystem(), getConstraint());
+}
+
+/** @brief take into account changes of speed (either load or max) */
+void CpuL07::onSpeedChange() {
+ lmm_variable_t var = NULL;
+ lmm_element_t elem = NULL;
+
+ lmm_update_constraint_bound(getModel()->getMaxminSystem(), getConstraint(), m_speedPeak * m_speedScale);
+ while ((var = lmm_get_var_from_cnst
+ (getModel()->getMaxminSystem(), getConstraint(), &elem))) {
+ Action *action = static_cast<Action*>(lmm_variable_id(var));
+
+ lmm_update_variable_bound(getModel()->getMaxminSystem(),
+ action->getVariable(),
+ m_speedScale * m_speedPeak);
+ }
+
+ Cpu::onSpeedChange();
+}
+
+
+bool LinkL07::isUsed(){
+ return lmm_constraint_used(getModel()->getMaxminSystem(), getConstraint());
+}
+
+void CpuL07::updateState(tmgr_trace_iterator_t triggered, double value, double /*date*/){
+ XBT_DEBUG("Updating cpu %s (%p) with value %g", getName(), this, value);
+ if (triggered == p_speedEvent) {
+ m_speedScale = value;
+ onSpeedChange();
+ tmgr_trace_event_unref(&p_speedEvent);
+ } else if (triggered == p_stateEvent) {
+ if (value > 0)
+ turnOn();
+ else
+ turnOff();
+ tmgr_trace_event_unref(&p_stateEvent);
+ } else {
+ xbt_die("Unknown event!\n");
+ }
+}
+
+void LinkL07::updateState(tmgr_trace_iterator_t triggered, double value, double date) {
+ XBT_DEBUG("Updating link %s (%p) with value=%f for date=%g", getName(), this, value, date);
+ if (triggered == p_bwEvent) {
+ updateBandwidth(value, date);
+ tmgr_trace_event_unref(&p_bwEvent);
+ } else if (triggered == p_latEvent) {
+ updateLatency(value, date);
+ tmgr_trace_event_unref(&p_latEvent);
+ } else if (triggered == p_stateEvent) {
+ if (value > 0)
+ turnOn();
+ else
+ turnOff();
+ tmgr_trace_event_unref(&p_stateEvent);
+ } else {
+ xbt_die("Unknown event ! \n");
+ }
+}
+