|
@@ -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:19:07 2017
|
|
|
+Date: Thu Feb 9 12:46:19 2017
|
|
|
|
|
|
Model author: Yentl Van Tendeloo
|
|
|
Model name: MvK Server
|
|
@@ -272,8 +272,11 @@ class MvKController(RuntimeClassBase):
|
|
|
value = [json.loads(data["value"])]
|
|
|
else:
|
|
|
value = json.loads(data["data"])
|
|
|
- args = value
|
|
|
- self.input_queue.append((source, data["op"], args, data["username"]))
|
|
|
+ for v in value[:-1]:
|
|
|
+ self.input_queue.append((None, data["op"], [v], data["username"]))
|
|
|
+ self.input_queue.append((source, data["op"], [value[-1]], data["username"]))
|
|
|
+ else:
|
|
|
+ self.input_queue.append((source, data["op"], args, data["username"]))
|
|
|
except ValueError:
|
|
|
print("Error when deserializing request: " + str(data))
|
|
|
raise
|
|
@@ -304,8 +307,6 @@ class MvKController(RuntimeClassBase):
|
|
|
|
|
|
def _running_find_users_get_all_links_0_exec(self, parameters):
|
|
|
data = parameters[0]
|
|
|
- print("Root: " + str(self.root))
|
|
|
- print("Users: " + str(data))
|
|
|
self.users = data[0][0]
|
|
|
|
|
|
def _running_find_users_retrieve_users_0_exec(self, parameters):
|
|
@@ -320,7 +321,6 @@ 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]
|
|
|
- print("EXPANDED Users: " + str(data))
|
|
|
|
|
|
def _running_find_users_process_users_0_guard(self, parameters):
|
|
|
return not self.users
|
|
@@ -335,7 +335,6 @@ class MvKController(RuntimeClassBase):
|
|
|
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])]))
|
|
|
- print self.users[0]
|
|
|
self.user_statecharts[self.users[0]] = instancename
|
|
|
# Repush all this user's messages in the input queue
|
|
|
self.input_queue.extend(self.user_queue.pop(self.users[0], []))
|
|
@@ -762,7 +761,8 @@ class Socket(RuntimeClassBase):
|
|
|
def _connected_queueing_queueing_0_exec(self, parameters):
|
|
|
data = parameters[0]
|
|
|
#post_data = "&".join(["%s=%s" % (urllib.quote(k), urllib.quote(v)) for k, v in data.iteritems()])
|
|
|
- post_data = "&".join(["%s=%s" % (k, v) for k, v in data.iteritems()])
|
|
|
+ #post_data = "&".join(["%s=%s" % (k, v) for k, v in data.iteritems()])
|
|
|
+ post_data = data
|
|
|
self.send_data += "HTTP/1.0 200 OK\r\n"
|
|
|
self.send_data += "Content-Length: %s\r\n" % len(post_data)
|
|
|
self.send_data += "Content-Type: %s; charset=UTF-8\r\n" % "text/plain"
|
|
@@ -1084,7 +1084,6 @@ class UserStatechart(RuntimeClassBase):
|
|
|
|
|
|
def user_defined_constructor(self, username):
|
|
|
self.username = username
|
|
|
- print("INIT " + self.username)
|
|
|
|
|
|
self.output_queue = []
|
|
|
self.source_execution = None
|
|
@@ -1230,7 +1229,6 @@ class UserStatechart(RuntimeClassBase):
|
|
|
|
|
|
def _running_execution_init_enter(self):
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent/executor', Event("execute", None, [self.returnpath, self.username, 'execute_rule', [], self.request_id])]))
|
|
|
- print("Raise execute event!")
|
|
|
self.outstanding_execution = self.request_id
|
|
|
self.request_id += 1
|
|
|
|
|
@@ -1266,16 +1264,16 @@ class UserStatechart(RuntimeClassBase):
|
|
|
source = parameters[0]
|
|
|
args = parameters[1]
|
|
|
self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent/executor', Event("execute", None, [self.returnpath, self.username, 'set_input', args, self.request_id])]))
|
|
|
- print 'set_input in userstatechart'
|
|
|
- self.outstanding_input[self.request_id] = source
|
|
|
- self.request_id += 1
|
|
|
+ if source is not None:
|
|
|
+ self.outstanding_input[self.request_id] = source
|
|
|
+ self.request_id += 1
|
|
|
|
|
|
def _running_set_input_fetch_1_exec(self, parameters):
|
|
|
returnvalue = parameters[0]
|
|
|
success = parameters[1]
|
|
|
request_id = parameters[2]
|
|
|
source = self.outstanding_input.pop(request_id)
|
|
|
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent/to_mvi/' + source, Event("HTTP_input", None, [returnvalue])]))
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent/to_mvi/' + source, Event("HTTP_input", None, [json.dumps(returnvalue)])]))
|
|
|
self.raiseInternalEvent(Event("set_input_done", None, []))
|
|
|
|
|
|
def _running_set_input_fetch_1_guard(self, parameters):
|
|
@@ -1301,7 +1299,7 @@ class UserStatechart(RuntimeClassBase):
|
|
|
returnvalue = parameters[0]
|
|
|
success = parameters[1]
|
|
|
request_id = parameters[2]
|
|
|
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent/to_mvi/' + self.output_queue.pop(0), Event("HTTP_input", None, [returnvalue])]))
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent/to_mvi/' + self.output_queue.pop(0), Event("HTTP_input", None, [json.dumps(returnvalue)])]))
|
|
|
self.outstanding_output = None
|
|
|
|
|
|
def _running_get_output_try_execute_1_guard(self, parameters):
|
|
@@ -1403,7 +1401,6 @@ class Executor(RuntimeClassBase):
|
|
|
|
|
|
# state /init/execute/idle
|
|
|
self.states["/init/execute/idle"] = State(7, self)
|
|
|
- self.states["/init/execute/idle"].setEnter(self._init_execute_idle_enter)
|
|
|
|
|
|
# state /init/execute/execution
|
|
|
self.states["/init/execute/execution"] = State(8, self)
|
|
@@ -1446,16 +1443,21 @@ class Executor(RuntimeClassBase):
|
|
|
_init_execute_execution_0 = Transition(self, self.states["/init/execute/execution"], [self.states["/init/execute/idle"]])
|
|
|
_init_execute_execution_0.setAction(self._init_execute_execution_0_exec)
|
|
|
_init_execute_execution_0.setTrigger(None)
|
|
|
+ _init_execute_execution_0.setGuard(self._init_execute_execution_0_guard)
|
|
|
self.states["/init/execute/execution"].addTransition(_init_execute_execution_0)
|
|
|
-
|
|
|
- def _init_execute_idle_enter(self):
|
|
|
- print 'in idle'
|
|
|
+ _init_execute_execution_1 = Transition(self, self.states["/init/execute/execution"], [self.states["/init/execute/idle"]])
|
|
|
+ _init_execute_execution_1.setTrigger(None)
|
|
|
+ _init_execute_execution_1.setGuard(self._init_execute_execution_1_guard)
|
|
|
+ self.states["/init/execute/execution"].addTransition(_init_execute_execution_1)
|
|
|
|
|
|
def _init_execute_execution_enter(self):
|
|
|
- _, username, operation, params, _ = self.request_queue[0]
|
|
|
+ self.mvk.returnvalue = None
|
|
|
+ self.mvk.success = True
|
|
|
+ self.first = True
|
|
|
+
|
|
|
+ self.returnpath, username, operation, params, self.request_id = self.request_queue.pop(0)
|
|
|
reply = None
|
|
|
commands = []
|
|
|
- print("Execute operation: " + operation)
|
|
|
while 1:
|
|
|
commands = self.mvk.execute_yields(username, operation, params, reply)
|
|
|
if commands is None:
|
|
@@ -1474,19 +1476,19 @@ class Executor(RuntimeClassBase):
|
|
|
operation = parameters[2]
|
|
|
params = parameters[3]
|
|
|
request_id = parameters[4]
|
|
|
- print 'got execute event'
|
|
|
- self.request_queue.append(("/" + returnpath, username, operation, params, request_id))
|
|
|
+ self.request_queue.append((("/" + returnpath) if returnpath is not None else None, username, operation, params, request_id))
|
|
|
|
|
|
def _init_execute_idle_0_guard(self, parameters):
|
|
|
return self.request_queue
|
|
|
|
|
|
def _init_execute_execution_0_exec(self, parameters):
|
|
|
- returnpath, _, _, _, request_id = self.request_queue.pop(0)
|
|
|
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent' + returnpath, Event("executed", None, [self.mvk.returnvalue, self.mvk.success, request_id])]))
|
|
|
- print("Executed action --> " + str(self.mvk.returnvalue))
|
|
|
- self.mvk.returnvalue = None
|
|
|
- self.mvk.success = True
|
|
|
- self.first = True
|
|
|
+ self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent' + self.returnpath, Event("executed", None, [self.mvk.returnvalue, self.mvk.success, self.request_id])]))
|
|
|
+
|
|
|
+ def _init_execute_execution_0_guard(self, parameters):
|
|
|
+ return self.returnpath is not None
|
|
|
+
|
|
|
+ def _init_execute_execution_1_guard(self, parameters):
|
|
|
+ return self.returnpath is None
|
|
|
|
|
|
def initializeStatechart(self):
|
|
|
# enter default state
|