|
@@ -1,7 +1,7 @@
|
|
|
"""
|
|
|
Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
|
|
|
|
|
|
-Date: Thu Feb 9 12:46:19 2017
|
|
|
+Date: Thu Feb 9 13:03:43 2017
|
|
|
|
|
|
Model author: Yentl Van Tendeloo
|
|
|
Model name: MvK Server
|
|
@@ -215,6 +215,11 @@ class MvKController(RuntimeClassBase):
|
|
|
_running_find_users_process_users_1.setTrigger(None)
|
|
|
_running_find_users_process_users_1.setGuard(self._running_find_users_process_users_1_guard)
|
|
|
self.states["/running/find_users/process_users"].addTransition(_running_find_users_process_users_1)
|
|
|
+ _running_find_users_process_users_2 = Transition(self, self.states["/running/find_users/process_users"], [self.states["/running/find_users/process_users"]])
|
|
|
+ _running_find_users_process_users_2.setAction(self._running_find_users_process_users_2_exec)
|
|
|
+ _running_find_users_process_users_2.setTrigger(None)
|
|
|
+ _running_find_users_process_users_2.setGuard(self._running_find_users_process_users_2_guard)
|
|
|
+ self.states["/running/find_users/process_users"].addTransition(_running_find_users_process_users_2)
|
|
|
|
|
|
# transition /running/find_users/creating_user
|
|
|
_running_find_users_creating_user_0 = Transition(self, self.states["/running/find_users/creating_user"], [self.states["/running/find_users/retrieve_users"]])
|
|
@@ -320,25 +325,33 @@ class MvKController(RuntimeClassBase):
|
|
|
|
|
|
def _running_find_users_got_usernames_0_exec(self, parameters):
|
|
|
data = parameters[0]
|
|
|
- self.users = [v[0] for v in data if v[0] not in self.user_statecharts]
|
|
|
+ data = set([v[0] for v in data])
|
|
|
+ self.add_users = [v for v in data if v not in self.user_statecharts]
|
|
|
+ self.delete_users = [v for v in self.user_statecharts if v not in data]
|
|
|
|
|
|
def _running_find_users_process_users_0_guard(self, parameters):
|
|
|
- return not self.users
|
|
|
+ return not self.add_users and not self.delete_users
|
|
|
|
|
|
def _running_find_users_process_users_1_exec(self, parameters):
|
|
|
- self.big_step.outputEventOM(Event("create_instance", None, [self, 'users', 'UserStatechart', self.users[0]]))
|
|
|
+ self.big_step.outputEventOM(Event("create_instance", None, [self, 'users', 'UserStatechart', self.add_users[0]]))
|
|
|
|
|
|
def _running_find_users_process_users_1_guard(self, parameters):
|
|
|
- return self.users
|
|
|
+ return self.add_users and not self.delete_users
|
|
|
+
|
|
|
+ def _running_find_users_process_users_2_exec(self, parameters):
|
|
|
+ self.big_step.outputEventOM(Event("delete_instance", None, [self, self.user_statecharts.pop(self.delete_users.pop(0))]))
|
|
|
+
|
|
|
+ def _running_find_users_process_users_2_guard(self, parameters):
|
|
|
+ return self.delete_users
|
|
|
|
|
|
def _running_find_users_creating_user_0_exec(self, parameters):
|
|
|
instancename = parameters[0]
|
|
|
self.big_step.outputEventOM(Event("start_instance", None, [self, instancename]))
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, instancename, Event("set_returnpath", None, [instancename])]))
|
|
|
- self.user_statecharts[self.users[0]] = instancename
|
|
|
+ self.user_statecharts[self.add_users[0]] = instancename
|
|
|
# Repush all this user's messages in the input queue
|
|
|
- self.input_queue.extend(self.user_queue.pop(self.users[0], []))
|
|
|
- self.users.pop(0)
|
|
|
+ self.input_queue.extend(self.user_queue.pop(self.add_users[0], []))
|
|
|
+ self.add_users.pop(0)
|
|
|
|
|
|
def initializeStatechart(self):
|
|
|
# enter default state
|
|
@@ -1458,6 +1471,8 @@ class Executor(RuntimeClassBase):
|
|
|
self.returnpath, username, operation, params, self.request_id = self.request_queue.pop(0)
|
|
|
reply = None
|
|
|
commands = []
|
|
|
+ if operation == "set_input":
|
|
|
+ print("Add input " + str(params))
|
|
|
while 1:
|
|
|
commands = self.mvk.execute_yields(username, operation, params, reply)
|
|
|
if commands is None:
|