collector.py 781 B

123456789101112131415161718192021222324
  1. from pypdevs.DEVS import AtomicDEVS
  2. from loguru import logger
  3. class Collector(AtomicDEVS):
  4. """A simple collector which holds every received item in a list in its state"""
  5. def __init__(self, name):
  6. super(Collector, self).__init__(name)
  7. self.inp = self.addInPort("inp")
  8. # keep track of items received
  9. self.state = {
  10. "items": []
  11. }
  12. def get_contents(self):
  13. """ Get the current contents of the collector """
  14. return self.state["items"]
  15. def extTransition(self, inputs):
  16. if self.inp in inputs:
  17. new_item = inputs[self.inp]
  18. self.state["items"].append(new_item)
  19. logger.trace(f"{type(self).__name__} '{self.name}' received: {new_item}")
  20. return self.state