def __init__(self, name, event, bindings, taskexpr, procedure, synchronous): self._procedure = procedure self._synchronous = synchronous TaskExprTFrame.__init__(self, name, event, bindings, taskexpr) #self._started = False self._cached_roles = None
def tf_set_completed(self, agent, result): if result is SUCCESS: # TODO: should run bindings.bformals to evaluate formals and match actual output params # This will allow the MinusPrefix hack to be fixed agent.post_event(ProcedureSucceededEvent(self)) else: agent.post_event(ProcedureFailedEvent(self, result)) TaskExprTFrame.tf_set_completed(self, agent, result)
def tframes(self, agent, event, bindings, zexpr): b = self.make_bindings(agent, bindings, zexpr) #XXX needs a better name. update (kwc): using agent.nextid() now if b: name = "Closure.%s" % agent.nextid() return [TaskExprTFrame(name, event, b, self.closed_zexpr[1])] else: return []
def tenter(self, agent, tframe, zexpr): raise Unimplemented("Haven't fixed ApplyTask yet") oldbindings = tframe.getBaseBindings() closure_value = termEvalErr(agent, oldbindings, zexpr[0]) closed_zexpr = closure_value.closed_zexpr bindings = closure_value.make_bindings(agent, oldbindings, zexpr[1:]) event = PseudoGoalEvent(tframe, self) tframe._subgoal_event = event name = "%s.%s" % (tframe.name(), self.label()) event.addTFrame(TaskExprTFrame(name, event, bindings, closed_zexpr)) step_fn(agent, tframe, EXECUTING, zexpr) return tframe.tfpost_subgoal(agent, event)
def tfcont(self, agent): return TaskExprTFrame.tfcont(self, agent)
def constructor_args(self): args = TaskExprTFrame.constructor_args(self) return args + [self._procedure, int(self._synchronous)]
def tf_is_sync(self): if self._synchronous: return TaskExprTFrame.tf_is_sync(self) else: return None