Enhanced ExecutionContext to keep track of the execution flow
This commit is contained in:
@@ -656,6 +656,30 @@ class SheerkaDataProvider:
|
||||
with self.io.open(target_path, "rb") as f:
|
||||
return self.serializer.deserialize(f, None)
|
||||
|
||||
def save_result(self, execution_context):
|
||||
"""
|
||||
Save the execution context associated with an event
|
||||
To make a long story short,
|
||||
for every single user input, there is an event (which is the first thing that is created)
|
||||
and a result (the ExecutionContext created by sheerka.evaluate_user_input()
|
||||
:param execution_context:
|
||||
:return:
|
||||
"""
|
||||
digest = execution_context.event.get_digest()
|
||||
self.log.debug(f"Saving execution context. digest={digest}")
|
||||
target_path = self.io.get_obj_path(SheerkaDataProvider.EventFolder, digest) + "_result"
|
||||
if self.io.exists(target_path):
|
||||
return digest
|
||||
|
||||
self.io.write_binary(target_path, self.serializer.serialize(execution_context, None).read())
|
||||
return digest
|
||||
|
||||
def load_result(self, digest):
|
||||
target_path = self.io.get_obj_path(SheerkaDataProvider.EventFolder, digest) + "_result"
|
||||
|
||||
with self.io.open(target_path, "rb") as f:
|
||||
return self.serializer.deserialize(f, None)
|
||||
|
||||
def save_state(self, state: State):
|
||||
digest = state.get_digest()
|
||||
self.log.debug(f"Saving new state. digest={digest}")
|
||||
|
||||
Reference in New Issue
Block a user