-Action *NetworkConstantModel::communicate(RoutingEdge *src, RoutingEdge *dst,
- double size, double rate)
-{
- char *src_name = src->getName();
- char *dst_name = dst->getName();
+ void NetworkConstantModel::updateActionsState(double /*now*/, double delta)
+ {
+ NetworkConstantAction *action = nullptr;
+ ActionList *actionSet = getRunningActionSet();
+ for(ActionList::iterator it(actionSet->begin()), itNext=it, itend(actionSet->end())
+ ; it != itend ; it=itNext) {
+ ++itNext;
+ action = static_cast<NetworkConstantAction*>(&*it);
+ if (action->latency_ > 0) {
+ if (action->latency_ > delta) {
+ double_update(&(action->latency_), delta, sg_surf_precision);
+ } else {
+ action->latency_ = 0.0;
+ }
+ }
+ action->updateRemains(action->getCost() * delta / action->initialLatency_);
+ if (action->getMaxDuration() != NO_MAX_DURATION)
+ action->updateMaxDuration(delta);
+
+ if (action->getRemainsNoUpdate() <= 0) {
+ action->finish();
+ action->setState(Action::State::done);
+ } else if ((action->getMaxDuration() != NO_MAX_DURATION)
+ && (action->getMaxDuration() <= 0)) {
+ action->finish();
+ action->setState(Action::State::done);
+ }
+ }
+ }