def _dispatch_callback(self, msg, cid, mid, cast, cmd_name, resp=None): if resp is None: resp = ok() if not isinstance(resp, ( dict, list, )): msg = "msg %r tried to send a non-dict: %s" % (msg, str(resp)) logger.error("msg %r tried to send a non-dict: %s", msg, str(resp)) return self.send_error(mid, cid, msg, "server error", cast=cast, errno=errors.BAD_MSG_DATA_ERROR) if isinstance(resp, list): resp = {"results": resp} self.send_ok(mid, cid, msg, resp, cast=cast) if cmd_name.lower() == "quit": if cid is not None: self.stream.flush() self.arbiter.stop()
def dispatch(self, cid, msg): try: json_msg = json.loads(msg) except ValueError: raise gen.Return(self.send_error(cid, msg, "json invalid", errno=errors.INVALID_JSON)) cmd_name = json_msg.get('command') properties = json_msg.get('properties', {}) cast = json_msg.get('msg_type') == "cast" resp = yield gen.Task(self.execute_command, cmd_name, properties, cid, msg, cast) if resp is None: resp = ok() if not isinstance(resp, (dict, list,)): msg = "msg %r tried to send a non-dict: %s" % (msg, str(resp)) logger.error("msg %r tried to send a non-dict: %s", msg, str(resp)) raise gen.Return(self.send_error(cid, msg, "server error", cast=cast, errno=errors.BAD_MSG_DATA_ERROR)) if isinstance(resp, list): resp = {"results": resp} self.send_ok(cid, msg, resp, cast=cast)
def dispatch(self, job): cid, msg = job try: json_msg = json.loads(msg) except ValueError: return self.send_error(cid, msg, "json invalid", errno=errors.INVALID_JSON) cmd_name = json_msg.get('command') properties = json_msg.get('properties', {}) cast = json_msg.get('msg_type') == "cast" try: if cmd_name is None: error = "no cmd: %r" % cmd_name return self.send_error(cid, msg, error, cast=cast, errno=errors.UNKNOWN_COMMAND) cmd = self.commands[cmd_name.lower()] except KeyError: error = "unknown command: %r" % cmd_name return self.send_error(cid, msg, error, cast=cast, errno=errors.UNKNOWN_COMMAND) try: cmd.validate(properties) resp = cmd.execute(self.arbiter, properties) except MessageError as e: return self.send_error(cid, msg, str(e), cast=cast, errno=errors.MESSAGE_ERROR) except OSError as e: return self.send_error(cid, msg, str(e), cast=cast, errno=errors.OS_ERROR) except: exctype, value = sys.exc_info()[:2] tb = traceback.format_exc() reason = "command %r: %s" % (msg, value) logger.debug("error: command %r: %s\n\n%s", msg, value, tb) return self.send_error(cid, msg, reason, tb, cast=cast, errno=errors.COMMAND_ERROR) if resp is None: resp = ok() if not isinstance(resp, (dict, list,)): msg = "msg %r tried to send a non-dict: %s" % (msg, str(resp)) logger.error("msg %r tried to send a non-dict: %s", msg, str(resp)) return self.send_error(cid, msg, "server error", cast=cast, errno=errors.BAD_MSG_DATA_ERROR) if isinstance(resp, list): resp = {"results": resp} self.send_ok(cid, msg, resp, cast=cast) if cmd_name.lower() == "quit": if cid is not None: self.stream.flush() self.arbiter.stop()
def dispatch(self, job): cid, msg = job try: json_msg = json.loads(msg) except ValueError: return self.send_error(cid, msg, "json invalid", errno=errors.INVALID_JSON) cmd_name = json_msg.get('command') properties = json_msg.get('properties', {}) cast = json_msg.get('msg_type') == "cast" try: cmd = self.commands[cmd_name.lower()] except KeyError: error = "unknown command: %r" % cmd_name return self.send_error(cid, msg, error, cast=cast, errno=errors.UNKNOWN_COMMAND) try: cmd.validate(properties) resp = cmd.execute(self.arbiter, properties) except MessageError as e: return self.send_error(cid, msg, str(e), cast=cast, errno=errors.MESSAGE_ERROR) except OSError as e: return self.send_error(cid, msg, str(e), cast=cast, errno=errors.OS_ERROR) except: exctype, value = sys.exc_info()[:2] tb = traceback.format_exc() reason = "command %r: %s" % (msg, value) logger.debug("error: command %r: %s\n\n%s", msg, value, tb) return self.send_error(cid, msg, reason, tb, cast=cast, errno=errors.COMMAND_ERROR) if resp is None: resp = ok() if not isinstance(resp, (dict, list,)): msg = "msg %r tried to send a non-dict: %s" % (msg, str(resp)) logger.error("msg %r tried to send a non-dict: %s", msg, str(resp)) return self.send_error(cid, msg, "server error", cast=cast, errno=errors.BAD_MSG_DATA_ERROR) if isinstance(resp, list): resp = {"results": resp} self.send_ok(cid, msg, resp, cast=cast) if cmd_name.lower() == "quit": if cid is not None: self.stream.flush() self.arbiter.stop()
def dispatch(self, job): cid, msg = job try: json_msg = json.loads(msg) except ValueError: return self.send_error(cid, msg, "json invalid") cmd_name = json_msg.get('command') properties = json_msg.get('properties', {}) try: cmd = self.commands[cmd_name.lower()] except KeyError: error = "unknown command: %r" % cmd_name return self.send_error(cid, msg, error) try: cmd.validate(properties) resp = cmd.execute(self.arbiter, properties) except MessageError as e: return self.send_error(cid, msg, str(e)) except OSError as e: return self.send_error(cid, msg, str(e)) except: exctype, value = sys.exc_info()[:2] tb = traceback.format_exc() reason = "command %r: %s" % (msg, value) logger.debug("error: command %r: %s\n\n%s", msg, value, tb) return self.send_error(cid, msg, reason, tb) if resp is None: resp = ok() if not isinstance(resp, (dict, list,)): msg = "msg %r tried to send a non-dict: %s" % (msg, str(resp)) logger.error("msg %r tried to send a non-dict: %s", msg, str(resp)) return self.send_error(cid, msg, "server error") if isinstance(resp, list): resp = {"results": resp} self.send_ok(cid, msg, resp) if cmd_name.lower() == "quit": if cid is not None: self.stream.flush() self.arbiter.stop()
def _dispatch_callback(self, msg, cid, mid, cast, cmd_name, resp=None): if resp is None: resp = ok() if not isinstance(resp, (dict, list)): msg = "msg %r tried to send a non-dict: %s" % (msg, str(resp)) logger.error("msg %r tried to send a non-dict: %s", msg, str(resp)) return self.send_error(mid, cid, msg, "server error", cast=cast, errno=errors.BAD_MSG_DATA_ERROR) if isinstance(resp, list): resp = {"results": resp} self.send_ok(mid, cid, msg, resp, cast=cast) if cmd_name.lower() == "quit": if cid is not None: self.stream.flush()
def send_ok(self, cid, msg, props=None, cast=False): resp = ok(props) self.send_response(cid, msg, resp, cast=cast)
def send_ok(self, mid, cid, msg, props=None, cast=False): resp = ok(props) self.send_response(mid, cid, msg, resp, cast=cast)
def send_ok(self, cid, msg, props=None): resp = ok(props) self.send_response(cid, msg, resp)