Aceita ligações e permite a transmissão e receção de fluxos de dados binários para portas modeladas.
Contexto
A classe ara::rds::RawDataStreamServer representa, na AUTOSAR Adaptive Platform (módulo rds), a contraparte do lado do servidor para transmissões de dados orientadas a fluxos SWS RawDataStream p. 1. A sua tarefa principal consiste em aceitar ligações de clientes de entrada numa porta de comunicação modelada e processar a subsequente troca bidirecional de dados brutos não estruturados através de fluxos de dados binários.
Entre os principais intervenientes na interação incluem-se:
- a aplicação de servidor de nível superior, que cria a instância, aguarda por ligações e inicia a transmissão de dados,
- o sistema de tempo de execução AUTOSAR, ao qual o servidor é vinculado através de um
ara::core::InstanceSpecifier para uma porta modelada [SWS_RDS_11312],
- o cliente externo, que estabelece uma ligação ao servidor [SWS_RDS_11318] e troca dados úteis [SWS_RDS_11322], [SWS_RDS_11324].
Ciclo de vida
A instanciação de um RawDataStreamServer não é realizada através de construtores comuns, mas exclusivamente através do método de fábrica estático Create [SWS_RDS_11312]. Este vincula o servidor à porta especificada por ara::core::InstanceSpecifier.
Relativamente às relações de posse, a classe impõe uma semântica estrita de apenas movimento (move-only). O construtor de cópia [SWS_RDS_11316] e o operador de atribuição por cópia [SWS_RDS_11317] estão explicitamente eliminados (delete). A transferência de recursos para outros âmbitos de validade só é, por isso, possível através do construtor de movimento [SWS_RDS_11314] ou do operador de atribuição por movimento [SWS_RDS_11315].
Interpretação: após a criação bem-sucedida, a instância do servidor encontra-se num estado inicial de prontidão, no qual ainda não existe nenhuma ligação ativa. Pergunta Q-5d536f7c10a62342 (aberta) Através de WaitForConnection [SWS_RDS_11318] ou da variante monitorizada por tempo WaitForConnection(timeout) [SWS_RDS_11319], o servidor aguarda por um cliente e transita, em caso de sucesso, para o estado de ligação ativa. A ligação pode ser encerrada de forma direcionada em tempo de execução mediante a chamada de Shutdown [SWS_RDS_11320].
Ao destruir a instância do servidor, o destrutor ~RawDataStreamServer garante que uma ligação ainda aberta é desativada e encerrada automaticamente e de forma ordeira [SWS_RDS_11313].
No que diz respeito à concorrência, o método de criação Create está especificado como thread-safe [SWS_RDS_11312]. As operações de movimento [SWS_RDS_11314], [SWS_RDS_11315] e o destrutor [SWS_RDS_11313], por outro lado, estão explicitamente designados como não thread-safe (not thread-safe) e requerem proteção de sincronização externa em caso de acesso simultâneo a partir de múltiplas threads.
Diagrama de estados: fases de uma instância de servidor, desde a criação até ao desmantelamento da ligação, passando pela aceitação da ligação. Fontes: [SWS_RDS_11312], [SWS_RDS_11318], [SWS_RDS_11320], [SWS_RDS_11313]
Caminho de utilização
O fluxo de utilização típico de uma aplicação de servidor compreende os passos de inicialização, espera por ligações, transferência bidirecional de dados e desmantelamento da ligação:
- Criar o servidor: A aplicação instancia o servidor através de
ara::rds::RawDataStreamServer::Create(instance) para a porta configurada [SWS_RDS_11312].
- Aguardar por ligação: A aplicação bloqueia mediante
WaitForConnection() [SWS_RDS_11318] ou com duração máxima configurada via WaitForConnection(timeout) [SWS_RDS_11319], até que um cliente tenha estabelecido a ligação.
- Receber e enviar dados: Após a ligação bem-sucedida, a aplicação lê dados binários mediante
ReadData(maxLength) [SWS_RDS_11322] ou com monitorização temporal via ReadData(maxLength, timeout) [SWS_RDS_11323]. Para o envio de dados binários, chama-se WriteData, opcionalmente sem limite de tempo de espera [SWS_RDS_11324] ou com monitorização temporal [SWS_RDS_11325]. O envio via WriteData transfere presumivelmente a posse do buffer de bytes disponibilizado (std::unique_ptr<ara::core::Byte[]>) para o servidor. Pergunta Q-eec0fea4a5ffaf40 (aberta)
- Desligar a ligação: Concluída a transmissão de dados, a aplicação termina explicitamente a sessão através de
Shutdown() [SWS_RDS_11320].
Diagrama de sequência: sequência de criação, aceitação de ligação, troca de dados e fecho da ligação. Fontes: [SWS_RDS_11312], [SWS_RDS_11318], [SWS_RDS_11322], [SWS_RDS_11324], [SWS_RDS_11320]
Cenários de erro
O tratamento de erros de RawDataStreamServer segue os princípios da AUTOSAR Adaptive Platform para interfaces tolerantes a falhas:
Nenhum dos métodos lança exceções C++; todas as funções estão declaradas como noexcept SWS RawDataStream p. 1. Em vez disso, os casos de erro são comunicados ao chamador através do tipo de retorno ara::core::Result.
Os cenários de erro típicos abrangem:
- Excedimentos de tempo: Nos métodos
WaitForConnection [SWS_RDS_11319], ReadData [SWS_RDS_11323] e WriteData [SWS_RDS_11325] com timeout, o decurso do intervalo de tempo especificado conduz a um estado de erro no ara::core::Result retornado.
- Erros de ligação e estados inválidos: Os métodos
ReadData, WriteData e WaitForConnection deverão, em caso de erro (como na desconexão prematura da ligação ou em erros internos de comunicação), retornar os códigos de erro correspondentes no ara::core::Result. Pergunta Q-0c6815ddde412d81 (aberta)
- Pré e pós-condições: Os chamadores têm de verificar sempre a validade do
ara::core::Result retornado antes de acederem aos valores dos dados, a fim de assegurar o estado isento de erros da operação.
Este guia baseia-se na especificação AUTOSAR Adaptive R25-11 e foi criado automaticamente.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão