mosis24DEVS/examples/queueing/collector.py
2017-04-06 12:02:58 +02:00

29 lines
1 KiB
Python

from pypdevs.DEVS import AtomicDEVS
# Define the state of the collector as a structured object
class CollectorState(object):
def __init__(self):
# Contains received events and simulation time
self.events = []
self.current_time = 0.0
class Collector(AtomicDEVS):
def __init__(self):
AtomicDEVS.__init__(self, "Collector")
self.state = CollectorState()
# Has only one input port
self.in_event = self.addInPort("in_event")
def extTransition(self, inputs):
# Update simulation time
self.state.current_time += self.elapsed
# Calculate time in queue
evt = inputs[self.in_event]
time = self.state.current_time - evt.creation_time - evt.processing_time
inputs[self.in_event].queueing_time = max(0.0, time)
# Add incoming event to received events
self.state.events.append(inputs[self.in_event])
return self.state
# Don't define anything else, as we only store events.
# Collector has no behaviour of its own.