int Drill::deltaConf(int *input) { int out = lambda(); time_remaining = 0; parts += *input; if(expire->getRealTime() < process_time) { timeAdvance(parts, process_time); return out; } parts -= 1; timeAdvance(parts, process_time); return out; }
int Drill::deltaInternal() { int out = lambda(); if(parts > 0) { parts -= 1; throwEvent(1); timeAdvance(parts, process_time); } else { throwEvent(1); timeAdvance(0, process_time); } return out; }
InternalEvent * Simulator::buildInternalEvent(const Time& currentTime) { Time time(timeAdvance()); if (not isInfinity(time)) { return new InternalEvent(currentTime + time, this); } else { return 0; } }
void Drill::deltaExternal(Time2D *time, int *input) { double current_time = time->getRealTime(); time_remaining = expire->getRealTime() - current_time; std::cout << "DE-" << this->name << ":TR " << time_remaining << std::endl; parts += *input; if(time_remaining <= 0) { time_remaining = process_time; } timeAdvance(parts, time_remaining); }
/************** DEVS functions *****************/ vd::Time init(vd::Time time) override { devs_state = INIT; processIn(time, INTERNAL); return timeAdvance(); }
virtual devs::Time init(devs::Time time) override { internalTransition(time); return timeAdvance(); }