"SURF_ACTION_NOT_IN_THE_SYSTEM"
};
-Action::Action()
-: m_refcount(1)
-{}
+void Action::initialize(ModelPtr model, double cost, bool failed,
+ lmm_variable_t var)
+{
+ m_priority = 1.0;
+ m_refcount = 1;
+ m_remains = cost;
+ m_maxDuration = NO_MAX_DURATION;
+ m_finish = -1.0;
+ m_failed = failed;
+ m_start = surf_get_clock();
+ m_cost = cost;
+ p_model = model;
+ p_data = NULL;
+ p_variable = var;
+ m_lastValue = 0;
+ m_lastUpdate = 0;
+ m_suspended = false;
+ m_hat = NOTSET;
+}
Action::Action(ModelPtr model, double cost, bool failed)
- : m_priority(1.0)
- , m_refcount(1)
- , m_remains(cost)
- , m_maxDuration(NO_MAX_DURATION)
- , m_finish(-1.0)
- , m_failed(failed)
- , m_start(surf_get_clock())
- , m_cost(cost)
- , p_model(model)
- , p_data(NULL)
- , p_variable(NULL)
- , m_lastValue(0)
- , m_lastUpdate(0)
- , m_suspended(false)
{
+ initialize(model, cost, failed);
#ifdef HAVE_TRACING
p_category = NULL;
#endif
}
Action::Action(ModelPtr model, double cost, bool failed, lmm_variable_t var)
- : m_priority(1.0)
- , m_refcount(1)
- , m_remains(cost)
- , m_maxDuration(NO_MAX_DURATION)
- , m_finish(-1.0)
- , m_failed(failed)
- , m_start(surf_get_clock())
- , m_cost(cost)
- , p_model(model)
- , p_data(NULL)
- , p_variable(var)
- , m_lastValue(0)
- , m_lastUpdate(0)
- , m_suspended(false)
{
+ initialize(model, cost, failed, var);
#ifdef HAVE_TRACING
p_category = NULL;
#endif
if (m_remains > 0) {
XBT_DEBUG("Updating action(%p): remains was %f, last_update was: %f", this, m_remains, m_lastUpdate);
- double_update(&m_remains, m_lastValue * delta);
+ double_update(&m_remains, m_lastValue * delta, sg_surf_precision*sg_maxmin_precision);
#ifdef HAVE_TRACING
if (getModel() == static_cast<ModelPtr>(surf_cpu_model_pm) && TRACE_is_enabled()) {
if(getModel() == static_cast<ModelPtr>(surf_network_model))
{
if (m_maxDuration != NO_MAX_DURATION)
- double_update(&m_maxDuration, delta);
+ double_update(&m_maxDuration, delta, sg_surf_precision);
//FIXME: duplicated code
if ((m_remains <= 0) &&