Define um intervalo fechado de valores de bytes para padrões de serviços de diagnóstico em listas dinâmicas de acesso.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 772c8ed103ebProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Define um intervalo fechado de valores de bytes para padrões de serviços de diagnóstico em listas dinâmicas de acesso.
A classe ara::diag::DynamicAccessListDiagServiceBuilder::ByteRange representa um intervalo fechado de valores de bytes para a definição de padrões de serviços de diagnóstico em listas dinâmicas de acesso [SWS_DM_01182]. As aplicações criam esses objetos de valor com valores mínimos e máximos e os passam ao builder para a configuração passo a passo de padrões de serviço [SWS_DM_01183]. Além disso, os limites de intervalo definidos podem ser lidos a qualquer momento por meio de inspetores. Todas as funções-membro são declaradas como seguras contra exceções como noexcept, enquanto operadores de atribuição modificadores exigem sincronização à parte no acesso concorrente.
Contexto
A classe ara::diag::DynamicAccessListDiagServiceBuilder::ByteRange representa um intervalo fechado de valores de bytes dentro de um padrão de serviço de diagnóstico [SWS_DM_01182]. No âmbito do gerenciamento de acesso dinâmico (DynamicAccessList), ela atua como um bloco de construção elementar para definir com precisão critérios e faixas de valores de bytes individuais para requisições de diagnóstico AUTOSAR_AP_SWS_Diagnostics §8.15.2 «Class: ByteRange».
Como tipo de valor aninhado, ByteRange atua em cooperação direta com o DynamicAccessListDiagServiceBuilder superior. Enquanto a aplicação de diagnóstico cria instâncias com valores-limite específicos, o builder consome esses objetos por meio de métodos como Add[SWS_DM_01177] ou EndsWith[SWS_DM_01180] para construir sequências de padrões de bytes para serviços de diagnóstico. Adicionalmente, a classe possibilita a leitura dos limites configurados por meio de GetMin[SWS_DM_01189] e GetMax[SWS_DM_01190].
Ciclo de vida
Instâncias de ByteRange são criadas regularmente por meio do construtor parametrizado, que recebe o valor mínimo (min) e o valor máximo (max) como um intervalo fechado de valores [SWS_DM_01183]. Por se tratar de um objeto de valor sem estado e sem vinculação dinâmica de recursos, não existem fases operacionais internas complexas.
A classe implementa semântica de valor em conformidade com o padrão: ela disponibiliza tanto um construtor de cópia [SWS_DM_01184] quanto um construtor de movimento [SWS_DM_01185], permitindo que os exemplares sejam passados sem problemas por cópia ou por movimento para métodos do builder. De forma análoga, estão disponíveis o operador de atribuição por cópia [SWS_DM_01186] e o operador de atribuição por movimento [SWS_DM_01187]. O ciclo de vida se encerra com o destrutor [SWS_DM_01188].
Em relação à concorrência, o AUTOSAR especifica requisitos diferenciados: construtores e operações de leitura são classificados como seguros para threads, ao passo que os operadores de atribuição operator= ([SWS_DM_01186], [SWS_DM_01187]) e o destrutor [SWS_DM_01188] não são expressamente seguros para threads. Operações modificadoras na mesma instância exigem, portanto, medidas de sincronização no nível do chamador.
Caminho de utilização
O uso típico de ByteRange ocorre no âmbito da configuração sequencial de padrões de serviço por meio do builder:
A aplicação cria um objeto ByteRange especificando os limites min e max[SWS_DM_01183].
O intervalo é passado a DynamicAccessListDiagServiceBuilder::Add para estender o padrão na posição atual [SWS_DM_01177].
Com EndsWith, pode ser definido um intervalo final que constitui a conclusão do padrão [SWS_DM_01180].
Se necessário, a aplicação lê os valores-limite por meio de GetMin[SWS_DM_01189] e GetMax[SWS_DM_01190] para verificação.
Diagrama de sequência: interação típica na definição de um padrão de diagnóstico com ByteRange. Fontes: [SWS_DM_01183], [SWS_DM_01177], [SWS_DM_01180], [SWS_DM_01189], [SWS_DM_01190].
Cenários de erro
Todas as funções-membro da classe são declaradas com noexcept e, portanto, são totalmente seguras contra exceções (exception safe) [SWS_DM_01183]. Nem a construção, nem atribuições ou consultas lançam exceções C++.
Possíveis situações de erro dizem respeito primariamente a erros lógicos de parametrização: caso uma aplicação passe um valor mínimo min que seja maior que o valor máximo max, a especificação não define nenhum comportamento de erro explícito (interpretação: tal par de valores inválido provavelmente só deverá ser rejeitado durante o processamento subsequente de padrões no builder ou levar a um padrão de correspondência vazio). Pergunta Q-ea9c65d175d48946 (aberta) Outro risco de erro reside na atribuição desprotegida por meio de operator= no acesso concorrente de múltiplas threads ao mesmo objeto, visto que atribuições não são seguras para threads [SWS_DM_01186].
Este guia de classe baseia-se na especificação AUTOSAR Adaptive R25-11 para o módulo diag.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão