|
@@ -19,25 +19,21 @@ class RequestHandler(object):
|
|
self.reply = reply
|
|
self.reply = reply
|
|
while self.generator_stack:
|
|
while self.generator_stack:
|
|
try:
|
|
try:
|
|
- print("Stack: " + str(self.generator_stack))
|
|
|
|
requests = self.generator_stack[-1].send(self.reply)
|
|
requests = self.generator_stack[-1].send(self.reply)
|
|
- print("Requests: " + str(requests))
|
|
|
|
|
|
|
|
# Generated new request, so process
|
|
# Generated new request, so process
|
|
if requests and requests[0][0] in self.handlers:
|
|
if requests and requests[0][0] in self.handlers:
|
|
- # Try to add a new generator to branch into
|
|
|
|
self.generator_stack.append(None)
|
|
self.generator_stack.append(None)
|
|
# This next command potentially raises a finished message already, meaning that we should stop already
|
|
# This next command potentially raises a finished message already, meaning that we should stop already
|
|
# We avoid an extra try/except block by putting the None on the stack already
|
|
# We avoid an extra try/except block by putting the None on the stack already
|
|
- self.generator_stack[-1] = self.handlers[requests[0][0]](requests[0][1])
|
|
|
|
self.reply = None
|
|
self.reply = None
|
|
|
|
+ self.generator_stack[-1] = self.handlers[requests[0][0]](requests[0][1])
|
|
else:
|
|
else:
|
|
# MvS request, so forward that instead
|
|
# MvS request, so forward that instead
|
|
return requests
|
|
return requests
|
|
|
|
|
|
except StopIteration:
|
|
except StopIteration:
|
|
# Exception, so finished execution of this generator, passing on None to the caller
|
|
# Exception, so finished execution of this generator, passing on None to the caller
|
|
- print("STOPITER")
|
|
|
|
del self.generator_stack[-1]
|
|
del self.generator_stack[-1]
|
|
self.reply = [None]
|
|
self.reply = [None]
|
|
|
|
|
|
@@ -50,14 +46,12 @@ class RequestHandler(object):
|
|
# Exception, so finished execution of this generator, passing on ex.result to the caller
|
|
# Exception, so finished execution of this generator, passing on ex.result to the caller
|
|
del self.generator_stack[-1]
|
|
del self.generator_stack[-1]
|
|
self.reply = [ex.result]
|
|
self.reply = [ex.result]
|
|
- print("SHOULD NOT HAPPEN")
|
|
|
|
|
|
|
|
def execute_sleep(self, request_args):
|
|
def execute_sleep(self, request_args):
|
|
raise primitive_functions.SleepKernel(request_args[0], request_args[1])
|
|
raise primitive_functions.SleepKernel(request_args[0], request_args[1])
|
|
|
|
|
|
def execute_return(self, request_args):
|
|
def execute_return(self, request_args):
|
|
- print("RETURNING")
|
|
|
|
- print(self.generator_stack)
|
|
|
|
del self.generator_stack[-1]
|
|
del self.generator_stack[-1]
|
|
- self.reply = request_args[0]
|
|
|
|
- print(self.generator_stack)
|
|
|
|
|
|
+ del self.generator_stack[-1]
|
|
|
|
+ self.reply = [request_args[0]]
|
|
|
|
+ return self.generator_stack[-1]
|