Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
NS3: move the content of Model::communicate into Action constructor
[simgrid.git] / src / surf / surf_interface.cpp
index 1dcc754..b5c3a80 100644 (file)
@@ -558,62 +558,51 @@ namespace simgrid {
 namespace surf {
 
 Resource::Resource(Model *model, const char *name)
-  : Resource(model, name, 1/*ON*/)
+  : name_(xbt_strdup(name))
+  , model_(model)
 {}
 
 Resource::Resource(Model *model, const char *name, lmm_constraint_t constraint)
-  : Resource(model, name, constraint, 1/*ON*/)
-{}
-  
-Resource::Resource(Model *model, const char *name, lmm_constraint_t constraint, int initiallyOn)
-  : p_name(xbt_strdup(name))
-  , p_model(model)
-  , m_isOn(initiallyOn)
-  , p_constraint(constraint)
-{}
-
-Resource::Resource(Model *model, const char *name, int initiallyOn)
-  : p_name(xbt_strdup(name))
-  , p_model(model)
-  , m_isOn(initiallyOn)
+  : name_(xbt_strdup(name))
+  , model_(model)
+  , constraint_(constraint)
 {}
 
-
 Resource::~Resource() {
-  xbt_free((void*)p_name);
+  xbt_free((void*)name_);
 }
 
-bool Resource::isOn() {
-  return m_isOn;
+bool Resource::isOn() const {
+  return isOn_;
 }
-bool Resource::isOff() {
-  return ! m_isOn;
+bool Resource::isOff() const {
+  return ! isOn_;
 }
 
 void Resource::turnOn()
 {
-  if (!m_isOn) {
-    m_isOn = true;
-  }
+  isOn_ = true;
 }
 
 void Resource::turnOff()
 {
-  if (m_isOn) {
-    m_isOn = false;
-  }
+  isOn_ = false;
 }
 
-Model *Resource::getModel() {
-  return p_model;
+Model *Resource::getModel() const {
+  return model_;
 }
 
-const char *Resource::getName() {
-  return p_name;
+const char *Resource::getName() const {
+  return name_;
 }
 
-lmm_constraint_t Resource::getConstraint() {
-  return p_constraint;
+bool Resource::operator==(const Resource &other) const {
+  return strcmp(name_, other.name_);
+}
+
+lmm_constraint_t Resource::getConstraint() const {
+  return constraint_;
 }
 
 }
@@ -674,38 +663,41 @@ void Action::finish() {
     m_finish = surf_get_clock();
 }
 
-e_surf_action_state_t Action::getState()
+Action::State Action::getState()
 {
   if (p_stateSet ==  getModel()->getReadyActionSet())
-    return SURF_ACTION_READY;
+    return Action::State::ready;
   if (p_stateSet ==  getModel()->getRunningActionSet())
-    return SURF_ACTION_RUNNING;
+    return Action::State::running;
   if (p_stateSet ==  getModel()->getFailedActionSet())
-    return SURF_ACTION_FAILED;
+    return Action::State::failed;
   if (p_stateSet ==  getModel()->getDoneActionSet())
-    return SURF_ACTION_DONE;
-  return SURF_ACTION_NOT_IN_THE_SYSTEM;
+    return Action::State::done;
+  return Action::State::not_in_the_system;
 }
 
-void Action::setState(e_surf_action_state_t state)
+void Action::setState(Action::State state)
 {
-  //surf_action_state_t action_state = &(action->model_type->states);
-  XBT_IN("(%p,%s)", this, surf_action_state_names[state]);
   p_stateSet->erase(p_stateSet->iterator_to(*this));
-  if (state == SURF_ACTION_READY)
+  switch (state) {
+  case Action::State::ready:
     p_stateSet = getModel()->getReadyActionSet();
-  else if (state == SURF_ACTION_RUNNING)
+    break;
+  case Action::State::running:
     p_stateSet = getModel()->getRunningActionSet();
-  else if (state == SURF_ACTION_FAILED)
+    break;
+  case Action::State::failed:
     p_stateSet = getModel()->getFailedActionSet();
-  else if (state == SURF_ACTION_DONE)
+    break;
+  case Action::State::done:
     p_stateSet = getModel()->getDoneActionSet();
-  else
+    break;
+  default:
     p_stateSet = NULL;
-
+    break;
+  }
   if (p_stateSet)
     p_stateSet->push_back(*this);
-  XBT_OUT();
 }
 
 double Action::getBound()
@@ -774,7 +766,7 @@ void Action::setPriority(double priority)
 }
 
 void Action::cancel(){
-  setState(SURF_ACTION_FAILED);
+  setState(Action::State::failed);
   if (getModel()->getUpdateMechanism() == UM_LAZY) {
     if (action_lmm_hook.is_linked())
       getModel()->getModifiedSet()->erase(getModel()->getModifiedSet()->iterator_to(*this));
@@ -922,12 +914,12 @@ void Action::updateRemainingLazy(double now)
     if ((m_remains <= 0) &&
         (lmm_get_variable_weight(getVariable()) > 0)) {
       finish();
-      setState(SURF_ACTION_DONE);
+      setState(Action::State::done);
       heapRemove(getModel()->getActionHeap());
     } else if (((m_maxDuration != NO_MAX_DURATION)
         && (m_maxDuration <= 0))) {
       finish();
-      setState(SURF_ACTION_DONE);
+      setState(Action::State::done);
       heapRemove(getModel()->getActionHeap());
     }
   }