Permite a leitura de arquivos ou diretórios completos por meio de áreas de memória compartilhada em solicitações de diagnóstico.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 4c654c39d186ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite a leitura de arquivos ou diretórios completos por meio de áreas de memória compartilhada em solicitações de diagnóstico.
A classe ara::diag::DataTransferReadSharedDataHandler destina-se ao processamento de transferências de dados de diagnóstico de leitura para conteúdos de arquivos e diretórios via memória compartilhada ([SWS_DM_01497]). Após o início da sessão, a implementação da aplicação disponibiliza a totalidade dos dados como Shared Data View via Read() e mantém o buffer alocado até a notificação de liberação pelo ReleaseHandler ([SWS_DM_01504]). Antes da destruição do objeto específico do manipulador, a sessão de transferência precisa ser obrigatoriamente concluída via ExitRead(). O objeto destina-se exclusivamente a uma única sessão de transferência e, portanto, pode ser movido, mas não copiado.
Contexto
A classe ara::diag::DataTransferReadSharedDataHandler pertence à área de diagnóstico da AUTOSAR Adaptive Platform no módulo diag (AUTOSAR_AP_SWS_Diagnostics §8.10.5 «Class: DataTransferReadSharedDataHandler»). Sua tarefa central consiste no processamento de transferências de dados para conteúdos de arquivos e diretórios acionadas por solicitações UDS como RequestReadFile ou RequestReadDirectory ([SWS_DM_01497]). Em vez de etapas individuais de cópia para cada bloco de transmissão, este manipulador permite que a implementação específica da aplicação disponibilize a totalidade dos dados como uma área de memória contígua e compartilhada.
No fluxo global do sistema cooperam três atores principais: o cliente UDS externo envia a solicitação de leitura para a unidade de controle. O ambiente de tempo de execução de diagnóstico AraDiag recebe a solicitação e encaminha a execução para a implementação concreta de DataTransferReadSharedDataHandler ([SWS_DM_01497], [SWS_DM_01504]). Um terceiro parceiro, o ReleaseHandler, sinaliza para a aplicação assim que os recursos de memória compartilhada não forem mais necessários pela plataforma e puderem ser liberados ([SWS_DM_01504]).
Diagrama de contexto: interação entre o cliente UDS, o ambiente de tempo de execução AraDiag e a implementação do manipulador do lado da aplicação. Fontes: [SWS_DM_01497], [SWS_DM_01504], [SWS_DM_01505]
Para a destruição do objeto existe uma pré-condição estrita: uma instância desta classe não pode, de forma alguma, ser destruída antes que a sessão de transferência tenha sido formalmente encerrada através da chamada de ExitRead() ([SWS_DM_01499], AUTOSAR_AP_SWS_Diagnostics §8.10.5.1.1.3 «Destructor»). Somente após a conclusão desse tratamento de encerramento o destrutor virtual pode ser executado ([SWS_DM_01499]).
Quanto à concorrência, os métodos centrais Read() e ExitRead() são identificados como não thread-safe (not thread-safe), enquanto todas as funções da interface garantem segurança de exceção (exception safe) ([SWS_DM_01498], [SWS_DM_01504], [SWS_DM_01505]).
Caminho de utilização
A sequência típica de chamadas de uma transferência de dados com áreas de memória compartilhada abrange várias etapas:
Disponibilização dos Shared Data:AraDiag chama o método puramente virtual Read() e passa um ReleaseHandler, MetaInfo bem como um CancellationHandler ([SWS_DM_01504]). A aplicação aloca a totalidade do conteúdo do arquivo ou diretório e retorna a visão compartilhada sobre ele como ara::core::Span<ara::core::Byte> através de um ara::core::Future para AraDiag ([SWS_DM_01504]).
Retenção da memória e liberação: a aplicação deve obrigatoriamente manter a memória alocada intacta até que o ReleaseHandler sinalize que a área de memória pode ser liberada com segurança ([SWS_DM_01504]). A aplicação pode, para isso, registrar uma função de notificação no ReleaseHandler ou consultar ativamente seu status ([SWS_DM_01504]). Interpretação: a sinalização através do ReleaseHandler ocorre provavelmente de forma assíncrona por meio de AraDiag, assim que os blocos de dados tiverem sido transmitidos com sucesso ao cliente UDS. Pergunta Q-0fbc1c5e667c9a68 (aberta)
Encerramento da sessão: para finalizar a transferência, AraDiag chama o método ExitRead() ([SWS_DM_01505], AUTOSAR_AP_SWS_Diagnostics §8.10.5.1.3.1 «ExitRead»). Além do motivo do término (DataTransferExitType), são passados parâmetros de solicitação específicos do fabricante do veículo, cujo tempo de vida é garantido até o cumprimento da promise de resultado ([SWS_DM_01505]). A aplicação fornece os dados de resposta através de um ara::core::Future<ara::core::Vector<ara::core::Byte>> ([SWS_DM_01505]).
Destruição do objeto: após a chamada bem-sucedida de ExitRead(), a instância do manipulador pode ser liberada e destruída ([SWS_DM_01499]).
Diagrama de sequência: sequência de etapas desde a disponibilização de dados via Read(), passando pela liberação de memória, até o encerramento via ExitRead(). Fontes: [SWS_DM_01499], [SWS_DM_01504], [SWS_DM_01505]
Cenários de erro
Se ocorrerem erros durante a disponibilização dos dados ou na finalização da transferência, eles serão reportados através do respectivo ara::core::Future com um ara::core::ErrorCode do domínio DiagUdsNrcErrc de acordo com a ISO 14229-1 ([SWS_DM_01504], [SWS_DM_01505]).
Outro cenário é o cancelamento de uma conversação de diagnóstico em andamento. Ambos os métodos recebem um CancellationHandler ([SWS_DM_01504], [SWS_DM_01505]). A aplicação pode verificar de forma síncrona o status do cancelamento por meio de cancellation_handler.IsCanceled() ou definir uma função de notificação via cancellation_handler.SetNotifier() para reagir imediatamente em caso de cancelamento prematuro ([SWS_DM_01504], [SWS_DM_01505]).
Uma violação da pré-condição relativa ao destrutor – quando o objeto é destruído antes que ExitRead() tenha sido chamado – contradiz a especificação [SWS_DM_01499] e leva a estados incorretos do programa.
Este guia de classe baseia-se na especificação AUTOSAR Adaptive Platform Release R25-11.
Provides the whole data to be read out from the application in form of a shared data view. The whole file/directory info content to be sent back to the UDS client will be allocated by the application and its shared ownership (view over the memory location) is passed as a result to AraDiag. The allocated memory must be kept until the ReleaseHandler’s notifier is invoked or the status polled, signalling that the memory, addressed by the Span now can safely be released.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 8bcba929adb6Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A interface ExitRead da classe ara::diag::DataTransferReadSharedDataHandler ([SWS_DM_01505]; cabeçalho ara/diag/data_transfer.h) encerra uma sessão de transferência de dados em andamento.
exit_type (DataTransferExitType): Especifica o motivo para o encerramento da sessão.
transfer_request_parameter_record (ara::core::Span<const ara::core::Byte>): Contém parâmetros específicos do fabricante para dar suporte à transferência. Os dados permanecem válidos até que o Promise associado seja cumprido ou o processamento seja cancelado.
meta_info (MetaInfo const&): Contém metainformações adicionais da solicitação de diagnóstico.
cancellation_handler (CancellationHandler): Permite verificar o status de cancelamento por meio de cancellation_handler.IsCanceled(), bem como registrar uma função de notificação via cancellation_handler.SetNotifier(), a qual é chamada em caso de cancelamento da conversação.
Tratamento de erros e valores de retorno
Em caso de conclusão bem-sucedida, o Future disponibiliza os dados de saída (transferResponseParameterRecord), os quais são posicionados após o SID na resposta positiva [SWS_DM_01505]. Em caso de erro, o Future é cumprido com um código de erro de DiagUdsNrcErrc (NRC aplicável de acordo com a ISO 14229-1) [SWS_DM_01505].
Concorrência e ciclo de vida
O método está declarado como noexcept (exception safe), porém explicitamente especificado como not thread-safe[SWS_DM_01505]. Em relação ao ciclo de vida do objeto, aplica-se a diretriz de que uma instância de DataTransferReadSharedDataHandler não deve, sob hipótese alguma, ser destruída antes que ExitRead() tenha sido chamado ([SWS_DM_01499]). Funções de encerramento e requisitos de destrutor análogos existem para as classes relacionadas DataTransferReadByPullHandler ([SWS_DM_01514]) e DataTransferReadByPushHandler ([SWS_DM_01523]).
Esta nota de uso foi criada por uma IA e baseia-se nas especificações da AUTOSAR Adaptive Platform.
This parameter record contains parameter(s), which are required
parameter_record
by the server to support the transfer of data. Format and length of this parameter(s) are vehicle manufacturer specific. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
meta_info
contains additional meta information of the request.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). The registered notifier is called if the current conversation is cancelled.
Returns a Future, which either gets readied to OperationOutput (transferResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in OperationOutput.response_data will be placed after SID as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
Provides the whole data to be read out from the application in form of a shared data view. The whole file/directory info content to be sent back to the UDS client will be allocated by the application and its shared ownership (view over the memory location) is passed as a result to AraDiag. The allocated memory must be kept until the ReleaseHandler’s notifier is invoked or the status polled, signalling that the memory, addressed by the Span now can safely be released.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: cba844c9db1eProcedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método Read da interface ara::diag::DataTransferReadSharedDataHandler disponibiliza dados de arquivo ou diretório a serem lidos para o cliente UDS por meio de uma visão de memória compartilhada ([SWS_DM_01504]). A chamada ocorre de forma assíncrona e retorna um ara::core::Future com um ara::core::Span<ara::core::Byte> ([SWS_DM_01504]).
Utilização e ciclo de vida
A aplicação implementadora aloca todo o conteúdo por conta própria e passa a visão para o AraDiag. A área de memória subjacente deve ser mantida obrigatoriamente inalterada até que a liberação através do ReleaseHandler passado seja sinalizada pelo seu notificador ou consultada por verificação de status ([SWS_DM_01504]). O ReleaseHandler deve ser armazenado para o mesmo cliente UDS com base no MetaInfo ([SWS_DM_01504]). Através do CancellationHandler, uma transferência em andamento pode ser monitorada via IsCanceled() ou um notificador de cancelamento pode ser registrado via SetNotifier() ([SWS_DM_01504]).
Tratamento de erros e simultaneidade
Em caso de sucesso, os dados são enviados como transferResponseParameterRecord após o blockSequenceCounter ([SWS_DM_01504]). Se a leitura falhar, o Future deve ser completado com um código de erro apropriado de DiagUdsNrcErrc de acordo com a ISO 14229-1 ([SWS_DM_01504]). Se a interface da aplicação ainda não tiver sido disponibilizada ou não estiver mais disponibilizada via offer(), o servidor reporta NRC 0x94 (ResourceTemporarilyNotAvailable) ([SWS_DM_01257]). A função é especificada como noexcept e segura contra exceções, mas é considerada não segura para threads (not thread-safe) ([SWS_DM_01504]).
demarcação
Ao contrário de DataTransferReadByPullHandler::Read, em que blocos de dados são copiados para um buffer predefinido ([SWS_DM_01513]), ou de DataTransferReadByPushHandler::Read, que fornece vetores por transferência de propriedade ([SWS_DM_01522]), este manipulador transmite o conteúdo total sem cópia de buffer por meio de memória compartilhada ([SWS_DM_01504]).
Esta nota de uso foi gerada automaticamente com base no padrão AUTOSAR.
The release shared resource handler to be stored and used by the application until a new one is passed for the same meta_info (UDS client).
meta_info
Contains additional meta information.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). The registered notifier is called if the current conversation is cancelled.
Returns a Future, which either gets readied to ReadSharedOutput (transferResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in ReleaseSharedHandler.responseData will be placed after the blockSequenceCounter as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão