Diese Seite wurde vollständig KI-generiert auf Basis von SWS Safe Hardware Acceleration (R25-11) — kein offizieller AUTOSAR-Text und keine automatisch extrahierte API-Seite wie die übrigen Module. Als Interpretation gekennzeichnete Aussagen sind Schlussfolgerungen aus den Quellen.
[AP_SWS_SHWA_00401] texto ainda não importadoUpstream: RS_SHWA_00006
class DeviceSelector {...};
Die Spezifikation definiert diesen Klassentyp mit der gezeigten Schnittstelle.
Serve como interface abstrata para a avaliação e seleção de dispositivos com base em uma estratégia de seleção específica.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 4c64c523c424ProcedênciaPerguntas em aberto (3)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Serve como interface abstrata para a avaliação e seleção de dispositivos com base em uma estratégia de seleção específica.
A classe abstrata ara::shwa::DeviceSelector define uma interface de estratégia para a avaliação e seleção de dispositivos-alvo no subsistema shwa. Ela possibilita a determinação direta de um dispositivo ideal por meio de SelectDevice(), bem como a avaliação comparativa de dispositivos candidatos individuais através de operator()[AP_SWS_SHWA_00403], [AP_SWS_SHWA_00404]. O destruidor padrão virtual garante a destruição segura de instâncias derivadas da estratégia. Entre as principais condições de contorno está o fato de as chamadas não serem thread-safe e de nenhuma semântica de rollback automático ser aplicada em caso de falhas.
Contexto
No módulo shwa, a classe ara::shwa::DeviceSelector disponibiliza uma interface abstrata para selecionar ou avaliar dispositivos de hardware ou funcionais (Device) com base em uma estratégia de seleção específica. Ela atua como uma camada de desacoplamento entre uma aplicação de controle de nível superior e os métodos de seleção concretos. Entre os parceiros de interação envolvidos estão a aplicação chamadora, a implementação concreta da estratégia de seleção e os objetos-alvo do tipo Device. A interface define duas operações centrais: a seleção direta de um dispositivo por meio de SelectDevice()[AP_SWS_SHWA_00403] e a avaliação individual comparativa de um dispositivo por meio do operador de chamada de função operator()[AP_SWS_SHWA_00404].
Como classe base abstrata com métodos puramente virtuais, DeviceSelector não pode ser instanciada diretamente. Estratégias de seleção concretas devem ser implementadas como classes derivadas e criadas pelo componente de aplicação. O gerenciamento de posse fica tipicamente a cargo da aplicação, por exemplo, por meio de smart pointers como std::unique_ptr<DeviceSelector>. Para uma destruição polimórfica limpa das classes especializadas, a interface declara um destruidor padrão virtual ~DeviceSelector()[AP_SWS_SHWA_00402]. Este é designado explicitamente como noexcept, atendendo assim aos requisitos de segurança contra exceções (exception safe) no descarte das instâncias [AP_SWS_SHWA_00402]. Pergunta Q-4e22b2e57ef141e9 (aberta)
No que diz respeito à concorrência e transições de estado, as operações da interface são classificadas como não thread-safe (not thread-safe) [AP_SWS_SHWA_00403], [AP_SWS_SHWA_00404]. Embora as funções-membro estejam anotadas com const, acessos concorrentes à mesma instância a partir de diferentes threads não devem ocorrer sem sincronização externa. Além disso, a especificação não prevê nenhuma reversão automática (no_rollback_semantics) para chamadas com falha [AP_SWS_SHWA_00403], [AP_SWS_SHWA_00404].
Caminho de utilização
Um fluxo de utilização típico compreende a inicialização de uma instância de estratégia concreta e a subsequente avaliação ou seleção de dispositivos candidatos. Existem dois caminhos de chamada primários:
Seleção direta de dispositivos: a aplicação chama o método sem parâmetros SelectDevice()[AP_SWS_SHWA_00403]. A estratégia concreta determina autonomamente o dispositivo mais adequado e retorna um ara::core::Result<Device>.
Avaliação individual iterativa: em algoritmos para filtragem ou ordenação de múltiplos candidatos, a aplicação passa as respectivas instâncias sucessivamente para operator()(const Device &device)[AP_SWS_SHWA_00404]. A avaliação através de operator() provavelmente analisa internamente propriedades ou estados operacionais relevantes do dispositivo passado. Pergunta Q-8ba0b9b900196d50 (aberta) O valor int retornado no ara::core::Result<int> deve refletir uma métrica de aptidão ou prioridade, com base na qual o ponto chamador toma uma decisão de seleção.
Diagrama de sequência: sequências de chamada para avaliação individual e seleção direta, incluindo tratamento de erros. Fontes: [AP_SWS_SHWA_00403], [AP_SWS_SHWA_00404]
Cenários de erro
Ambos os métodos de seleção são declarados como noexcept e não lançam exceções C++ (exception safe). Em vez disso, sinalizam falhas pelo canal de erro de ara::core::Result. As aplicações devem sempre verificar o valor de retorno quanto a erros antes de acessar o resultado. Os seguintes estados de erro estão definidos para SelectDevice() e operator():
ShwaErrorCode::kResourceBusy: a operação solicitada não pôde ser executada porque o recurso necessário está ocupado no momento [AP_SWS_SHWA_00403], [AP_SWS_SHWA_00404]. Neste caso, a aplicação pode repetir a chamada em um momento posterior ou escolher uma estratégia alternativa.
ShwaErrorCode::kFeatureNotSupported: retornado quando uma funcionalidade solicitada para a seleção ou avaliação não é suportada pela implementação subjacente [AP_SWS_SHWA_00403], [AP_SWS_SHWA_00404].
Como não existe semântica de rollback (no_rollback_semantics) [AP_SWS_SHWA_00403], [AP_SWS_SHWA_00404], em caso de erro o sistema permanece no estado atual, e o ponto chamador é responsável por medidas de compensação adequadas. Além disso, aplica-se como pré-condição para operator() que a referência de dispositivo passada deve permanecer válida durante toda a chamada.
Este guia de classe baseia-se na especificação AUTOSAR Adaptive R25-11 (módulo shwa) e foi curado de forma automatizada.
Bewertet beziehungsweise selektiert ein Device entsprechend der Selektor-Strategie.
Scope
class ara::shwa::DeviceSelector
Thread Safety
not thread-safe no_rollback_semantics ShwaErrorCode::k ResourceBusy The operation could not be performed because the resource is currently busy no_rollback_semantics
Exception Safety
exception safe
Errors
ShwaErrorCode::k FeatureNotSupported Used when a requested feature isn’t supported
Request a governed re-review of this record. The record is not changed immediately.
virtual ara::core::Result< int > operator() (const Device &device) const noexcept=0;
Bewertet beziehungsweise selektiert ein Device entsprechend der Selektor-Strategie.
Scope
class ara::shwa::DeviceSelector
Thread Safety
not thread-safe no_rollback_semantics ShwaErrorCode::k ResourceBusy The operation could not be performed because the resource is currently busy no_rollback_semantics
Exception Safety
exception safe
Errors
ShwaErrorCode::k FeatureNotSupported Used when a requested feature isn’t supported
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