Acepta conexiones y permite la transmisión y recepción de flujos de datos binarios para puertos modelados.
Contexto
La clase ara::rds::RawDataStreamServer representa en AUTOSAR Adaptive Platform (módulo rds) la contraparte del lado del servidor para transmisiones de datos orientadas a flujos SWS RawDataStream p. 1. Su tarea principal consiste en aceptar conexiones entrantes de clientes en un puerto de comunicación modelado y procesar el posterior intercambio bidireccional de datos brutos no estructurados mediante flujos de datos binarios.
Entre los interlocutores principales se encuentran:
- la aplicación servidor de nivel superior, que crea la instancia, espera conexiones e inicia la transmisión de datos,
- el sistema de ejecución de AUTOSAR, al que se vincula el servidor mediante un
ara::core::InstanceSpecifier para un puerto modelado [SWS_RDS_11312],
- el cliente externo, que establece una conexión con el servidor [SWS_RDS_11318] e intercambia datos útiles [SWS_RDS_11322], [SWS_RDS_11324].
Ciclo de vida
La instanciación de un RawDataStreamServer no se realiza mediante constructores convencionales, sino exclusivamente a través del método de fábrica estático Create [SWS_RDS_11312]. Este vincula el servidor al puerto especificado mediante ara::core::InstanceSpecifier.
En cuanto a las relaciones de propiedad, la clase impone una estricta semántica de solo movimiento. El constructor de copia [SWS_RDS_11316] y el operador de asignación por copia [SWS_RDS_11317] están explícitamente eliminados (delete). Por lo tanto, la transferencia de recursos a otros ámbitos solo es posible a través del constructor de movimiento [SWS_RDS_11314] o del operador de asignación por movimiento [SWS_RDS_11315].
Interpretación: tras una creación exitosa, la instancia del servidor se encuentra en un estado inicial de disposición en el que aún no existe ninguna conexión activa. Pregunta Q-5d536f7c10a62342 (abierta) A través de WaitForConnection [SWS_RDS_11318] o de la variante supervisada por tiempo WaitForConnection(timeout) [SWS_RDS_11319], el servidor espera a un cliente y, en caso de éxito, pasa al estado de una conexión activa. La conexión puede cerrarse de manera selectiva en tiempo de ejecución mediante la llamada a Shutdown [SWS_RDS_11320].
Al destruir la instancia del servidor, el destructor ~RawDataStreamServer garantiza que una conexión que aún permanezca abierta se desactive y cierre adecuadamente de forma automática [SWS_RDS_11313].
En cuanto a la concurrencia, el método de creación Create está especificado como seguro para hilos [SWS_RDS_11312]. En cambio, las operaciones de movimiento [SWS_RDS_11314], [SWS_RDS_11315] y el destructor [SWS_RDS_11313] están catalogados explícitamente como no seguros para hilos (not thread-safe) y requieren protección de sincronización externa en caso de acceso simultáneo desde múltiples hilos.
Diagrama de estados: fases de una instancia de servidor desde la creación hasta la desconexión, pasando por la aceptación de la conexión. Fuentes: [SWS_RDS_11312], [SWS_RDS_11318], [SWS_RDS_11320], [SWS_RDS_11313]
Ruta de uso
La ruta de uso típica de una aplicación servidor abarca los pasos de inicialización, espera de conexiones, transferencia bidireccional de datos y desconexión:
- Crear servidor: la aplicación instancia el servidor a través de
ara::rds::RawDataStreamServer::Create(instance) para el puerto configurado [SWS_RDS_11312].
- Esperar conexión: la aplicación se bloquea mediante
WaitForConnection() [SWS_RDS_11318] o con una duración máxima configurada a través de WaitForConnection(timeout) [SWS_RDS_11319] hasta que un cliente haya establecido la conexión.
- Recepción y envío de datos: Tras una conexión exitosa, la aplicación lee datos binarios mediante
ReadData(maxLength) [SWS_RDS_11322] o con control de tiempo a través de ReadData(maxLength, timeout) [SWS_RDS_11323]. Para enviar datos binarios se invoca WriteData, opcionalmente sin límite de tiempo de espera [SWS_RDS_11324] o con control de tiempo [SWS_RDS_11325]. El envío mediante WriteData transfiere presumiblemente la propiedad del búfer de bytes proporcionado (std::unique_ptr<ara::core::Byte[]>) al servidor. Pregunta Q-eec0fea4a5ffaf40 (abierta)
- Desconexión: Una vez finalizada la transferencia de datos, la aplicación finaliza la sesión explícitamente a través de
Shutdown() [SWS_RDS_11320].
Diagrama de secuencia: flujo de creación, aceptación de la conexión, intercambio de datos y cierre de la conexión. Fuentes: [SWS_RDS_11312], [SWS_RDS_11318], [SWS_RDS_11322], [SWS_RDS_11324], [SWS_RDS_11320]
Escenarios de error
El tratamiento de errores de RawDataStreamServer sigue los principios de AUTOSAR Adaptive Platform para interfaces a prueba de fallos:
Ninguno de los métodos lanza excepciones de C++; todas las funciones están declaradas como noexcept SWS RawDataStream p. 1. En su lugar, los casos de error se comunican al llamante a través del tipo de retorno ara::core::Result.
Los escenarios de error típicos comprenden:
- Tiempos de espera agotados: En los métodos
WaitForConnection [SWS_RDS_11319], ReadData [SWS_RDS_11323] y WriteData [SWS_RDS_11325] con timeout, el transcurso del intervalo de tiempo especificado provoca un estado de error en el ara::core::Result devuelto.
- Errores de conexión y estados no válidos: En caso de error (por ejemplo, ante una conexión desconectada prematuramente o errores internos de comunicación), es previsible que los métodos
ReadData, WriteData y WaitForConnection devuelvan los códigos de error correspondientes en el ara::core::Result. Pregunta Q-0c6815ddde412d81 (abierta)
- Precondiciones y poscondiciones: Los llamantes siempre deben comprobar la validez del
ara::core::Result devuelto antes de acceder a los valores de los datos, con el fin de garantizar el estado libre de errores de la operación.
Esta guía se basa en la especificación AUTOSAR Adaptive R25-11 y ha sido generada automáticamente.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán