From 50b54d72cd21259789a6dbd8226bf6f54e7de04d Mon Sep 17 00:00:00 2001 From: John Sekar Date: Mon, 13 Nov 2017 22:14:39 -0500 Subject: [PATCH] Methods for update_message_queue --- wc_rules/sim.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/wc_rules/sim.py b/wc_rules/sim.py index 1d0cbc1..697aed8 100644 --- a/wc_rules/sim.py +++ b/wc_rules/sim.py @@ -14,6 +14,7 @@ def __init__(self,*args,**kwargs): kwargs[kwarg] = None super().__init__(*args,**kwargs) + class SimulationState(core.Model): agents = core.OneToManyAttribute(BaseClass,related_name='ss_agent') nodequeries = core.OneToManyAttribute(NodeQuery,related_name='ss_nq') @@ -25,6 +26,28 @@ def __init__(self,**kwargs): self.nodetypequery= NodeTypeQuery() self.update_message_queue = deque() + def add_message(self,update_message): + # appends to the right of deque + self.update_message_queue.append(update_message) + return self + + def pop_message(self): + # removes from left of deque + msg = self.update_message_queue.popleft(update_message) + return msg + + def process_message(self,update_message): + # processes and returns a list of messages or None + return [] + + def process_message_queue(self): + while len(self.update_message_queue)>0: + current_message = self.pop_message() + messages = self.process_message(current_message) + for msg in messages: + self.add_message(msg) + return self + def add_nodequery(self,nq): self.nodequeries.append(nq) self.nodetypequery.register_new_nq(nq)