Encapsula transferências de dados de diagnóstico de escrita e coordena a execução por meio de handlers de escrita.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 6f5de6951762ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Encapsula transferências de dados de diagnóstico de escrita e coordena a execução por meio de handlers de escrita.
A classe ara::diag::DataTransferWriteSession encapsula transferências de dados de diagnóstico de escrita e coordena o encaminhamento para handlers de escrita específicos da aplicação ([SWS_DM_01555]). Em serviços UDS de entrada, como TransferData (0x36) ou RequestTransferExit (0x37), a instância do servidor de diagnóstico chama os métodos correspondentes Write ou Exit dos handlers registrados ([SWS_DM_01317]). Como a construção padrão e por cópia estão excluídas, a sessão existe como uma instância única segura contra exceções, cuja instanciação ocorre presumivelmente por meio de construtores de template. Pergunta (aberta)
Contexto
A classe ara::diag::DataTransferWriteSession encapsula todas as variantes de transferências de dados de escrita no domínio funcional Adaptive Platform Diagnostics ([SWS_DM_01555]). Ela atua como elemento de ligação entre a instância do servidor de diagnóstico da plataforma e as implementações específicas da aplicação que executam a transferência de escrita propriamente dita.
No âmbito de serviços de diagnóstico como RequestFileTransfer (por exemplo, no modo de operação ReplaceFile (0x03) de acordo com [SWS_DM_01313]), a instância do servidor de diagnóstico recebe requisições de transferência. Se, na sequência, chegarem requisições de diagnóstico do serviço UDS TransferData (0x36), o servidor delega-as ao método Write daquela classe de handler que está vinculada à respectiva DataTransferWriteSession ([SWS_DM_01317]). Após a transferência de todos os blocos de dados, o serviço RequestTransferExit (0x37) sinaliza a conclusão, momento em que a instância do servidor de diagnóstico chama o método Exit do handler registrado ([SWS_DM_01318]).
Diagrama de contexto: Interação entre servidor de diagnóstico, DataTransferWriteSession e classe de handler específica da aplicação. Fontes: [SWS_DM_01555], [SWS_DM_01317], [SWS_DM_01318].
Ciclo de vida
O ciclo de vida de uma DataTransferWriteSession está sujeito às diretrizes do arquivo de cabeçalho ara/diag/data_transfer.h ([SWS_DM_01339]). A construção padrão está explicitamente excluída (DataTransferWriteSession() = delete, [SWS_DM_01339]). Uma instanciação ocorre, portanto, presumivelmente por meio de construtores de template, através dos quais classes de handler específicas são vinculadas ao objeto de sessão (AUTOSAR_AP_SWS_Diagnostics §8.10 «Context of RequestFileTransfer»). Pergunta Q-4575aa1e5d0889b3 (aberta)
Para garantir uma propriedade exclusiva, DataTransferWriteSession não é copiável nem atribuível por cópia: tanto o construtor de cópia ([SWS_DM_01559]) quanto o operador de atribuição por cópia ([SWS_DM_01560]) estão declarados como delete. As instâncias existem, consequentemente, como exemplares únicos exclusivos.
Em contrapartida, a classe suporta semântica completa de movimento: o construtor de movimento ([SWS_DM_01557]) e o operador de atribuição por movimento ([SWS_DM_01558]) são declarados como implementação padrão e especificados como noexcept bem como seguros contra exceções (\"exception safe\"). Eles permitem a transferência eficiente do estado da sessão entre contextos de programa. A destruição ocorre por meio do destrutor padrão seguro contra exceções (~DataTransferWriteSession() noexcept = default, [SWS_DM_01556]). No que diz respeito à concorrência, a utilização deverá ocorrer primariamente de forma sequencial dentro da thread servidora em execução, uma vez que não há mecanismos de sincronização documentados para acessos concorrentes. Pergunta Q-2c2278884fa11b21 (aberta)
Caminho de utilização
O fluxo regular de uma transferência de escrita ocorre nas seguintes etapas:
Inicialização: Ao receber uma requisição de escrita (por exemplo, RequestFileTransfer com kReplace de acordo com [SWS_DM_01313]), é estabelecida uma DataTransferWriteSession. Aqui, o handler específico da aplicação para operações de escrita é registrado por meio de construtores de template (AUTOSAR_AP_SWS_Diagnostics §8.10 «Context of RequestFileTransfer»).
Transferência de blocos de dados: Para cada requisição recebida do serviço UDS TransferData (0x36), a instância do servidor de diagnóstico chama o método Write da classe de handler registrada ([SWS_DM_01317]). Esta etapa é repetida ciclicamente para todos os blocos da transferência.
Encerramento da sessão: Após a conclusão da transferência, o servidor de diagnóstico recebe RequestTransferExit (0x37) e, em seguida, chama o método Exit da classe handler ([SWS_DM_01318]).
Limpeza: Após a conclusão bem-sucedida ou em caso de cancelamento prematuro, o objeto de sessão é destruído ([SWS_DM_01556]).
Diagrama de sequência: fluxo típico de uma transferência de dados de escrita por meio das instâncias envolvidas. Fontes: [SWS_DM_01317], [SWS_DM_01318], [SWS_DM_01556].
Cenários de erro
O tratamento de erros e a confiabilidade apoiam-se substancialmente, no ara::diag::DataTransferWriteSession, na segurança estática de tipos e na segurança de exceções:
Prevenção de estados inválidos de objetos: A exclusão do construtor padrão ([SWS_DM_01339]) impede que objetos de sessão não inicializados possam existir sem um handler associado. A proibição de operações de cópia ([SWS_DM_01559], [SWS_DM_01560]) exclui estados inconsistentes decorrentes de posse múltipla já em tempo de compilação.
Segurança de exceções na movimentação e destruição: A declaração do construtor de movimento ([SWS_DM_01557]), da atribuição por movimento ([SWS_DM_01558]) e do destrutor ([SWS_DM_01556]) como noexcept garante que nenhuma exceção seja lançada durante transferências de recursos e desmontagem da sessão em tempo de execução.
Cancelamento prematuro: Se uma transferência falhar prematuramente, o destrutor de noexcept assegura que o objeto de sessão possa ser limpo de forma confiável, inclusive no contexto de desenrolamento de pilha por exceção ([SWS_DM_01556]).
Este guia baseia-se nos documentos de especificação da AUTOSAR Adaptive Platform Release R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão