Encapsula transferencias de lectura activas asistidas por diagnóstico y reenvía transferencias de datos entrantes a los handlers registrados.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 9db606b147f6ProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Encapsula transferencias de lectura activas asistidas por diagnóstico y reenvía transferencias de datos entrantes a los handlers registrados.
La clase sirve para la encapsulación y la gestión estructurada de todas las variantes de transferencias de lectura basadas en diagnóstico dentro del módulo de diagnóstico adaptable de AUTOSAR según [SWS_DM_01548]. Tras la iniciación exitosa de un proceso de lectura, la instancia del servidor de diagnóstico delega las solicitudes entrantes para la transferencia secuencial de bloques de datos, así como para la finalización de la sesión, en los métodos registrados del handler de lectura [SWS_DM_01317]. Mediante la desactivación selectiva de las operaciones de copia manteniendo al mismo tiempo la compatibilidad con la semántica de movimiento, la clase garantiza una asignación unívoca de la propiedad de la sesión de transferencia subyacente.
Contexto
La clase ara::diag::DataTransferReadSession representa la encapsulación de todas las variantes para la lectura de bloques de datos asistida por diagnóstico en el módulo de diagnóstico adaptable [SWS_DM_01548]. En el marco de servicios UDS estandarizados como RequestFileTransfer (0x38), TransferData (0x36) y RequestTransferExit (0x37), la clase de sesión actúa como enlace entre el entorno de tiempo de ejecución interno del servidor de diagnóstico y los handlers de lectura específicos de la aplicación SWS Diagnostics §7 «Realization of TransferData and RequestTransferExit». Asegura que los procesos de lectura en curso (por ejemplo, para archivos mediante ReadFile[SWS_DM_01314] o directorios mediante ReadDir[SWS_DM_01315]) se gestionen de forma aislada y se reenvíen a los handlers correspondientes.
Una instancia de ara::diag::DataTransferReadSession posee un tiempo de vida estrictamente acoplado a la sesión de transferencia. La creación mediante un constructor predeterminado está explícitamente prohibida [SWS_DM_01549]. En su lugar, la sesión se inicializa mediante constructores de plantilla especializados que registran los handlers específicos de la aplicación SWS Diagnostics §7 «Realization of TransferData and RequestTransferExit». En la práctica, es de suponer que la instanciación sea realizada típicamente por el servidor de diagnóstico o el handler del servicio al iniciarse la transferencia de archivos. Pregunta Q-b0706bcd28c702c6 (abierta)
Para excluir asignaciones múltiples o estados de sesión inconsistentes, ara::diag::DataTransferReadSession está concebido como una instancia única no copiable: tanto el constructor de copia [SWS_DM_01553] como el operador de asignación por copia [SWS_DM_01554] están eliminados (=delete). La transferencia de propiedad solo está prevista mediante semántica de movimiento. El constructor de movimiento [SWS_DM_01551] y el operador de asignación por movimiento [SWS_DM_01552] están definidos como noexcept=default. La destrucción se realiza de forma determinista mediante el destructor [SWS_DM_01550], que también está declarado como noexcept=default. Presumiblemente, la finalización de la transferencia mediante RequestTransferExit conduce a la liberación del objeto. Pregunta Q-c1999fd1f283a007 (abierta)
Ruta de uso
El flujo típico de una sesión de transferencia de lectura se divide en tres fases consecutivas:
Inicialización: un cliente de diagnóstico externo envía RequestFileTransfer con un modo de lectura como ReadFile (0x04) [SWS_DM_01314] o ReadDir (0x05) [SWS_DM_01315]. Con ello se crea la instancia de sesión y se registra el manejador de lectura.
Transferencia de datos: el servidor de diagnóstico procesa las solicitudes de diagnóstico entrantes del tipo TransferData (0x36) invocando el método Read correspondiente del manejador registrado a través de los constructores de plantilla [SWS_DM_01317]. Esto se realiza de manera iterativa para cada bloque de datos solicitado.
Finalización: en cuanto se han transferido todos los datos, el cliente envía RequestTransferExit (0x37). A continuación, el servidor de diagnóstico invoca el método Exit del manejador registrado para finalizar debidamente el proceso de lectura [SWS_DM_01318].
Dado que ara::diag::DataTransferReadSession está declarado como final y el constructor por defecto [SWS_DM_01549] no existe, se evita una creación errónea sin manejador registrado ya en tiempo de compilación. Asimismo, las operaciones de copia eliminadas [SWS_DM_01553] impiden la duplicación accidental de estados de sesión. Tanto la construcción por movimiento como la asignación por movimiento y la destrucción garantizan una seguridad frente a excepciones absoluta gracias a su especificación noexcept[SWS_DM_01551][SWS_DM_01550]. Si falla la provisión de bloques de datos en el manejador, esto se gestiona en el marco de la comunicación UDS a nivel de protocolo.
Esta guía se basa en la especificación AUTOSAR Adaptive Platform R25-11 (módulo diag) y resume los requisitos para ara::diag::DataTransferReadSession.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán