def METHOD_NAME(self, request: CellMessage) -> CellMessage:
    if not isinstance(request, CellMessage):
        raise RuntimeError("request must be CellMessage but got {}".format(type(request)))
    command_name = request.get_header(MessageHeaderKey.TOPIC)
    # data = fobs.loads(request.payload)
    data = request.payload
    token = request.get_header(CellMessageHeaderKeys.TOKEN, None)
    # client_name = request.get_header(CellMessageHeaderKeys.CLIENT_NAME, None)
    client = None
    if token:
        client = self._get_client(token)
        if client:
            data.set_header(ServerCommandKey.FL_CLIENT, client)
    command = ServerCommands.get_command(command_name)
    if command:
        if command_name in ServerCommands.client_request_commands_names:
            if not client:
                return make_reply(
                    ReturnCode.AUTHENTICATION_ERROR,
                    "Request from client: missing client token",
                    None,
                )
        with self.engine.new_context() as new_fl_ctx:
            if command_name in ServerCommands.client_request_commands_names:
                state_check = command.get_state_check(new_fl_ctx)
                error = self.engine.server.authentication_check(request, state_check)
                if error:
                    return make_reply(ReturnCode.AUTHENTICATION_ERROR, error, None)
            reply = command.process(data=data, fl_ctx=new_fl_ctx)
            if reply is not None:
                return_message = new_cell_message({}, reply)
                return_message.set_header(MessageHeaderKey.RETURN_CODE, ReturnCode.OK)
            else:
                return_message = make_reply(ReturnCode.PROCESS_EXCEPTION, "No process results", None)
            return return_message
    else:
        return make_reply(ReturnCode.INVALID_REQUEST, "No server command found", None)