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

33 lines
1.2 KiB
Python

from pypdevs.DEVS import CoupledDEVS
# Import all models to couple
from generator import Generator
from queue import Queue
from processor import Processor
from collector import Collector
class QueueSystem(CoupledDEVS):
def __init__(self, mu, size, num, procs):
CoupledDEVS.__init__(self, "QueueSystem")
# Define all atomic submodels of which there are only one
generator = self.addSubModel(Generator(mu, size, num))
queue = self.addSubModel(Queue(len(procs)))
collector = self.addSubModel(Collector())
self.connectPorts(generator.out_event, queue.in_event)
# Instantiate desired number of processors and connect
processors = []
for i, param in enumerate(procs):
processors.append(self.addSubModel(
Processor(i, param)))
self.connectPorts(queue.out_proc[i],
processors[i].in_proc)
self.connectPorts(processors[i].out_finished,
queue.in_finish)
self.connectPorts(processors[i].out_proc,
collector.in_event)
# Make it accessible outside of our own scope
self.collector = collector