def executingTask(parentListener, taskname, arguments): executor = XPSExecutor.getNonsparkExecutor() larguments = List(arguments) requestId = log_outgoing_request(None, "executingTask", (parentListener, taskname, larguments)) listener = executor.executingTask(parentListener, taskname, toXPS(larguments)) log_incoming_result(requestId, "result", listener) return listener
def requestXPS(name, parameters): remote = XPSSolver.getNonsparkSolver() requestId = log_outgoing_request(None, name, parameters) if remote is None: errnum = ERR_SERVER_NOT_AVAILABLE result = "Remote XPS server is not available" log_incoming_result(requestId, errnum, result) return errnum, result f = remote.solveList(name, toXPS(parameters)) try: objresult = f.get() result = fromXPS(objresult) errnum = NO_ERROR except ExecutionException, e: errnum = ERR_EXECUTION result = e.getMessage()
except Fault, e: debug("incoming fault %r %r", e.faultCode, e.faultString) errnum, result = e.faultCode, e.faultString except ProtocolError, e: debug("outgoing request protocol error %r %r", e.errcode, e.errmsg) errnum, result = e.errcode, e.errmsg except socket.timeout, e: debug("outgoing request timeout") errnum, result = TRANSPORT_ERROR, "timed out" except socket.error, e: debug("outgoing request socket error") from errno import errorcode #errno = e[0] errmsg = e[1] errnum, result = TRANSPORT_ERROR, str(errmsg) log_incoming_result(requestId, errnum, result) return errnum, result ################################################################ FUNCTOR = "functor" ARGS = "args" SYM = "sym" VAR = "var" UNCHANGED_TYPES = (types.IntType, types.LongType, types.FloatType, basestring, types.BooleanType) def encodeXMLValue(sparkValue): "Converts a SPARK value to a python value that can be passed by XML" if isinstance(sparkValue, UNCHANGED_TYPES): return sparkValue
def taskSucceeded(self, boundParameters): result = fromXPS(boundParameters) log_incoming_result(self, "success", result) self.agent.add_ephemeral(S_taskSucceeded, self, result)
def taskFailed(self, reason): log_incoming_result(self, "failure", reason) self.agent.add_ephemeral(S_taskFailed, self, reason)