33 lines
1.2 KiB
Python
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
|