def handle_rpc()

in src/rosbridge/server.py [0:0]


    def handle_rpc(self, rpc):
        rpc_method = rpc.get('method', None)
        rpc_params = rpc.get('params', None)

        def reply(rpc_result, rpc_error=None):
            tx = zmq_serialize.dump_msg({
                'result': rpc_result,
                'error': rpc_error,
                'log_msgs': self.log_msgs,
            })
            del self.log_msgs[:]
            logger.debug('%s < %s', self.url, tx[0])
            self.sock.send_multipart(tx, flags=0, copy=False, track=False)

        try:
            if rpc_method == 'step':
                reply(self.handle_step(rpc_params))
            elif rpc_method == 'reset':
                reply(self.handle_reset(rpc_params))
            elif rpc_method == 'setup':
                reply(self.handle_setup(rpc_params))
            elif rpc_method == 'close':
                reply(self.handle_close(rpc_params))
            elif rpc_method == 'render':
                reply(self.handle_render(rpc_params))
            else:
                raise Exception('unknown method %s' % rpc_method)
        except:
            ex_type, ex_value, ex_tb = sys.exc_info()
            traceback.print_exception(ex_type, ex_value, ex_tb)
            reply(None, str(ex_type) + ': ' + str(ex_value))