def handle_rpc(self, request): initial_ctx = HttpMethodContext(self.http_transport, request, self.http_transport.app.out_protocol.mime_type) initial_ctx.in_string = [request.content.getvalue()] contexts = self.http_transport.generate_contexts(initial_ctx) p_ctx, others = contexts[0], contexts[1:] if p_ctx.in_error: return self.handle_error(p_ctx, others, p_ctx.in_error, request) else: self.http_transport.get_in_object(p_ctx) if p_ctx.in_error: return self.handle_error(p_ctx, others, p_ctx.in_error, request) else: self.http_transport.get_out_object(p_ctx) if p_ctx.out_error: return self.handle_error(p_ctx, others, p_ctx.out_error, request) self.http_transport.get_out_string(p_ctx) process_contexts(self.http_transport, others, p_ctx) def _cb_request_finished(request): request.finish() producer = _Producer(p_ctx.out_string, request) producer.deferred.addErrback(err).addCallback(_cb_request_finished) request.registerProducer(producer, False) return NOT_DONE_YET
def handle_rpc(self, request): initial_ctx = HttpMethodContext(self.http_transport, request, self.http_transport.app.out_protocol.mime_type) initial_ctx.in_string = [request.content.getvalue()] contexts = self.http_transport.generate_contexts(initial_ctx) p_ctx, others = contexts[0], contexts[1:] if p_ctx.in_error: return self.handle_error(p_ctx, others, p_ctx.in_error, request) else: self.http_transport.get_in_object(p_ctx) if p_ctx.in_error: return self.handle_error(p_ctx, others, p_ctx.in_error, request) else: self.http_transport.get_out_object(p_ctx) if p_ctx.out_error: return self.handle_error(p_ctx, others, p_ctx.out_error, request) def _cb_request_finished(request): request.finish() p_ctx.close() def _eb_request_finished(request): err(request) p_ctx.close() def _cb_deferred(retval, request): if len(p_ctx.descriptor.out_message._type_info) <= 1: p_ctx.out_object = [retval] else: p_ctx.out_object = retval self.http_transport.get_out_string(p_ctx) process_contexts(self.http_transport, others, p_ctx) producer = _Producer(p_ctx.out_string, request) producer.deferred.addCallbacks(_cb_request_finished, _eb_request_finished) request.registerProducer(producer, False) def _eb_deferred(retval, request): p_ctx.out_error = retval return self.handle_error(p_ctx, others, p_ctx.out_error, request) ret = p_ctx.out_object[0] if isinstance(ret, Deferred): ret.addCallback(_cb_deferred, request) ret.addErrback(_eb_deferred, request) else: _cb_deferred(request) return NOT_DONE_YET
def get_contexts(self, request): """Generate contexts for rpc request. :param request: Django HttpRequest instance. :returns: generated contexts """ initial_ctx = HttpMethodContext(self, request, self.app.out_protocol.mime_type) initial_ctx.in_string = [request.body] return self.generate_contexts(initial_ctx)
def get_contexts(self, request): """Generate contexts for rpc request. :param response: Django HttpRequest instance. :returns: generated contexts """ initial_ctx = HttpMethodContext(self, request, self.app.out_protocol.mime_type) initial_ctx.in_string = request.body in_string_charset = request.encoding or settings.DEFAULT_CHARSET return self.generate_contexts(initial_ctx, in_string_charset)
def get_contexts(self, request): """Generate contexts for rpc request. :param request: Django HttpRequest instance. :returns: generated contexts """ initial_ctx = HttpMethodContext(self, request, self.app.out_protocol.mime_type) initial_ctx.in_string = request.body in_string_charset = request.encoding or settings.DEFAULT_CHARSET return self.generate_contexts(initial_ctx, in_string_charset)
def handle_rpc(self, request): initial_ctx = HttpMethodContext( self.http_transport, request, self.http_transport.app.out_protocol.mime_type) initial_ctx.in_string = [request.content.getvalue()] contexts = self.http_transport.generate_contexts(initial_ctx) p_ctx, others = contexts[0], contexts[1:] if p_ctx.in_error: return self.handle_error(p_ctx, others, p_ctx.in_error, request) else: self.http_transport.get_in_object(p_ctx) if p_ctx.in_error: return self.handle_error(p_ctx, others, p_ctx.in_error, request) else: self.http_transport.get_out_object(p_ctx) if p_ctx.out_error: return self.handle_error(p_ctx, others, p_ctx.out_error, request) self.http_transport.get_out_string(p_ctx) process_contexts(self.http_transport, others, p_ctx) def _cb_request_finished(request): request.finish() p_ctx.close() def _eb_request_finished(request): err(request) p_ctx.close() producer = _Producer(p_ctx.out_string, request) producer.deferred.addErrback(_eb_request_finished).addCallback( _cb_request_finished) request.registerProducer(producer, False) return NOT_DONE_YET
def handle_rpc(self, request): initial_ctx = HttpMethodContext( self.http_transport, request, self.http_transport.app.out_protocol.mime_type) initial_ctx.in_string = [request.content.getvalue()] contexts = self.http_transport.generate_contexts(initial_ctx) p_ctx, others = contexts[0], contexts[1:] if p_ctx.in_error: return self.handle_rpc_error(p_ctx, others, p_ctx.in_error, request) else: self.http_transport.get_in_object(p_ctx) if p_ctx.in_error: return self.handle_rpc_error(p_ctx, others, p_ctx.in_error, request) else: self.http_transport.get_out_object(p_ctx) if p_ctx.out_error: return self.handle_rpc_error(p_ctx, others, p_ctx.out_error, request) def _cb_request_finished(request): request.finish() p_ctx.close() def _eb_request_finished(request): err(request) p_ctx.close() request.finish() def _cb_deferred(retval, request, cb=True): if cb and len(p_ctx.descriptor.out_message._type_info) <= 1: p_ctx.out_object = [retval] else: p_ctx.out_object = retval self.http_transport.get_out_string(p_ctx) process_contexts(self.http_transport, others, p_ctx) producer = _Producer(p_ctx.out_string, request) producer.deferred.addCallbacks(_cb_request_finished, _eb_request_finished) request.registerProducer(producer, False) def _eb_deferred(retval, request): p_ctx.out_error = retval.value if not issubclass(retval.type, Fault): retval.printTraceback() p_ctx.out_error = InternalError(retval.value) ret = self.handle_rpc_error(p_ctx, others, p_ctx.out_error, request) request.write(ret) request.finish() ret = p_ctx.out_object[0] if isinstance(ret, Deferred): ret.addCallback(_cb_deferred, request) ret.addErrback(_eb_deferred, request) elif isinstance(ret, PushBase): gen = self.http_transport.get_out_string(p_ctx) assert isgenerator(gen), "It looks like this protocol is not " \ "async-compliant yet." def _cb_push(): process_contexts(self.http_transport, others, p_ctx) producer = _Producer(p_ctx.out_string, request) producer.deferred.addCallbacks(_cb_request_finished, _eb_request_finished) request.registerProducer(producer, False) ret.init(p_ctx, request, gen, _cb_push, None) else: _cb_deferred(p_ctx.out_object, request, cb=False) return NOT_DONE_YET
def handle_rpc(self, request): initial_ctx = HttpMethodContext(self.http_transport, request, self.http_transport.app.out_protocol.mime_type) initial_ctx.in_string = [request.content.getvalue()] contexts = self.http_transport.generate_contexts(initial_ctx) p_ctx, others = contexts[0], contexts[1:] if p_ctx.in_error: return self.handle_rpc_error(p_ctx, others, p_ctx.in_error, request) else: self.http_transport.get_in_object(p_ctx) if p_ctx.in_error: return self.handle_rpc_error(p_ctx, others, p_ctx.in_error, request) else: self.http_transport.get_out_object(p_ctx) if p_ctx.out_error: return self.handle_rpc_error(p_ctx, others, p_ctx.out_error, request) def _cb_request_finished(request): request.finish() p_ctx.close() def _eb_request_finished(request): err(request) p_ctx.close() request.finish() def _cb_deferred(retval, request, cb=True): if cb and len(p_ctx.descriptor.out_message._type_info) <= 1: p_ctx.out_object = [retval] else: p_ctx.out_object = retval self.http_transport.get_out_string(p_ctx) process_contexts(self.http_transport, others, p_ctx) producer = _Producer(p_ctx.out_string, request) producer.deferred.addCallbacks(_cb_request_finished, _eb_request_finished) request.registerProducer(producer, False) def _eb_deferred(retval, request): p_ctx.out_error = retval.value if not issubclass(retval.type, Fault): retval.printTraceback() p_ctx.out_error = InternalError(retval.value) ret = self.handle_rpc_error(p_ctx, others, p_ctx.out_error, request) request.write(ret) request.finish() ret = p_ctx.out_object[0] if isinstance(ret, Deferred): ret.addCallback(_cb_deferred, request) ret.addErrback(_eb_deferred, request) elif isinstance(ret, PushBase): gen = self.http_transport.get_out_string(p_ctx) assert isgenerator(gen), "It looks like this protocol is not " \ "async-compliant yet." def _cb_push(): process_contexts(self.http_transport, others, p_ctx) producer = _Producer(p_ctx.out_string, request) producer.deferred.addCallbacks(_cb_request_finished, _eb_request_finished) request.registerProducer(producer, False) ret.init(p_ctx, request, gen, _cb_push, None) else: _cb_deferred(p_ctx.out_object, request, cb=False) return NOT_DONE_YET
def handle_rpc(self, request): initial_ctx = HttpMethodContext( self.http_transport, request, self.http_transport.app.out_protocol.mime_type) initial_ctx.in_string = [request.content.getvalue()] contexts = self.http_transport.generate_contexts(initial_ctx) p_ctx, others = contexts[0], contexts[1:] if p_ctx.in_error: return self.handle_error(p_ctx, others, p_ctx.in_error, request) else: self.http_transport.get_in_object(p_ctx) if p_ctx.in_error: return self.handle_error(p_ctx, others, p_ctx.in_error, request) else: self.http_transport.get_out_object(p_ctx) if p_ctx.out_error: return self.handle_error(p_ctx, others, p_ctx.out_error, request) def _cb_request_finished(request): request.finish() p_ctx.close() def _eb_request_finished(request): err(request) p_ctx.close() def _cb_deferred(retval, request): if len(p_ctx.descriptor.out_message._type_info) <= 1: p_ctx.out_object = [retval] else: p_ctx.out_object = retval self.http_transport.get_out_string(p_ctx) process_contexts(self.http_transport, others, p_ctx) producer = _Producer(p_ctx.out_string, request) producer.deferred.addCallbacks(_cb_request_finished, _eb_request_finished) request.registerProducer(producer, False) def _eb_deferred(retval, request): p_ctx.out_error = retval return self.handle_error(p_ctx, others, p_ctx.out_error, request) ret = p_ctx.out_object[0] if isinstance(ret, Deferred): ret.addCallback(_cb_deferred, request) ret.addErrback(_eb_deferred, request) else: _cb_deferred(request) return NOT_DONE_YET