Browse Source

Minor fixes to allow the use of set_input and to skip users starting with __

Yentl Van Tendeloo 9 years ago
parent
commit
53fed33ed9
1 changed files with 11 additions and 4 deletions
  1. 11 4
      model/model.py

+ 11 - 4
model/model.py

@@ -161,7 +161,7 @@ class ModelverseKernel(AtomicDEVS):
             # Got input from MvI, so we queue it
             for inp in inputs[self.from_mvi]:
                 if inp is not None:
-                    self.state.inputs.append(inp)
+                    self.state.inputs.extend(inp)
                 else:
                     self.state.outputs.append(None)
 
@@ -206,10 +206,17 @@ class ModelverseKernel(AtomicDEVS):
                     commands = [("RV", [self.state.users[0]])]
                 else:
                     self.state.current_user = self.state.reply
+                    if self.state.current_user.startswith("__"):
+                        # Don't process this user and force termination of user
+                        self.state.phase = "output"
+                        print("Starts with __")
+                    else:
+                        print("User OK")
                     commands = None
             elif self.state.phase == "input":
                 # Process inputs
-                commands = self.state.mvk.execute_yields(self.state.current_user, "set_input", [self.state.inputs[0]], self.state.reply)
+                element_type, value = self.state.inputs[0]
+                commands = self.state.mvk.execute_yields(self.state.current_user, "set_input", [element_type, value], self.state.reply)
             elif self.state.phase == "computation":
                 commands = self.state.mvk.execute_yields(self.state.current_user, "execute_rule", [], self.state.reply)
             elif self.state.phase == "output":
@@ -230,7 +237,7 @@ class ModelverseKernel(AtomicDEVS):
                     self.state.phase = "output"
                 elif self.state.phase == "output":
                     self.state.users.pop(0)
-                    self.state.phase = "input"
+                    self.state.phase = "init_user"
                 self.state.waiting = False
                 self.state.reply = None
             else:
@@ -471,6 +478,6 @@ args = {
 
 model = System(**args)
 sim = Simulator(model)
-sim.setTerminationTime(10)
+sim.setTerminationTime(20)
 sim.setVerbose()
 sim.simulate()