code: def consume(self, message):
          
          if 'jsonrpc' not in message or message['jsonrpc'] != JSONRPC_VERSION:
              log.warn("Unknown message type %s", message)
              return
  
          if 'id' not in message:
              log.debug("Handling notification from client %s", message)
              self._handle_notification(message['method'], message.get('params'))
          elif 'method' not in message:
              log.debug("Handling response from client %s", message)
              self._handle_response(message['id'], message.get('result'), message.get('error'))
          else:
              try:
                  log.debug("Handling request from client %s", message)
                  self._handle_request(message['id'], message['method'], message.get('params'))
              except JsonRpcException as e:
                  log.exception("Failed to handle request %s", message['id'])
                  self._consumer({
                      'jsonrpc': JSONRPC_VERSION,
                      'id': message['id'],
                      'error': e.to_dict()
                  })
              except Exception:  # pylint: disable=broad-except
                  log.exception("Failed to handle request %s", message['id'])
                  self._consumer({
                      'jsonrpc': JSONRPC_VERSION,
                      'id': message['id'],
                      'error': JsonRpcInternalError.of(sys.exc_info()).to_dict()
                  })
docs: Consume a JSON RPC message from the client.
  
          Args:
              message (dict): The JSON RPC message sent by the client