Encapsula transferencias de datos de diagnóstico de escritura y coordina la tramitación a través de manejadores de escritura.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 6f5de6951762ProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Encapsula transferencias de datos de diagnóstico de escritura y coordina la tramitación a través de manejadores de escritura.
La clase ara::diag::DataTransferWriteSession encapsula transferencias de datos de diagnóstico de escritura y coordina el reenvío a manejadores de escritura específicos de la aplicación ([SWS_DM_01555]). Con servicios UDS entrantes como TransferData (0x36) o RequestTransferExit (0x37), la instancia del servidor de diagnóstico llama a los correspondientes métodos Write o Exit de los manejadores registrados ([SWS_DM_01317]). Dado que la construcción por defecto y de copia están eliminadas, la sesión existe como una instancia única segura frente a excepciones cuya creación se realiza presumiblemente a través de constructores de plantilla. Pregunta (abierta)
Contexto
La clase ara::diag::DataTransferWriteSession encapsula todas las variantes de transferencias de datos de escritura dentro del área funcional Adaptive Platform Diagnostics ([SWS_DM_01555]). Actúa como elemento de enlace entre la instancia del servidor de diagnóstico de la plataforma y las implementaciones específicas de la aplicación que llevan a cabo la transferencia de escritura propiamente dicha.
En el marco de servicios de diagnóstico como RequestFileTransfer (por ejemplo, en el modo de funcionamiento ReplaceFile (0x03) según [SWS_DM_01313]), la instancia del servidor de diagnóstico acepta solicitudes de transferencia. Si más adelante llegan solicitudes de diagnóstico del servicio UDS TransferData (0x36), el servidor las delega al método Write de la clase de manejador que esté vinculada a la respectiva DataTransferWriteSession ([SWS_DM_01317]). Tras la transferencia de todos los bloques de datos, el servicio RequestTransferExit (0x37) señaliza la finalización, tras lo cual la instancia del servidor de diagnóstico llama al método Exit del manejador registrado ([SWS_DM_01318]).
Diagrama de contexto: interacción entre el servidor de diagnóstico, DataTransferWriteSession y la clase de manejador específica de la aplicación. Fuentes: [SWS_DM_01555], [SWS_DM_01317], [SWS_DM_01318].
Ciclo de vida
El ciclo de vida de una DataTransferWriteSession está sujeto a los requisitos del archivo de encabezado ara/diag/data_transfer.h ([SWS_DM_01339]). La construcción por defecto está explícitamente eliminada (DataTransferWriteSession() = delete, [SWS_DM_01339]). Por lo tanto, una instanciación se realiza presumiblemente a través de constructores de plantilla, mediante los cuales se vinculan clases de manejador específicas al objeto de sesión (AUTOSAR_AP_SWS_Diagnostics §8.10 «Context of RequestFileTransfer»). Pregunta Q-4575aa1e5d0889b3 (abierta)
Para imponer una propiedad unívoca, DataTransferWriteSession no es copiable ni admite asignación por copia: tanto el constructor de copia ([SWS_DM_01559]) como el operador de asignación por copia ([SWS_DM_01560]) están declarados como delete. Por consiguiente, las instancias existen como ejemplares únicos exclusivos.
En cambio, la clase admite una semántica de movimiento completa: el constructor de movimiento ([SWS_DM_01557]) y el operador de asignación por movimiento ([SWS_DM_01558]) están declarados como implementación predeterminada y especificados como noexcept, así como seguros frente a excepciones («exception safe»). Permiten la transferencia eficiente del estado de la sesión entre contextos de programa. La destrucción se realiza a través del destructor por defecto seguro frente a excepciones (~DataTransferWriteSession() noexcept = default, [SWS_DM_01556]). En cuanto a la concurrencia, es de suponer que el uso es principalmente secuencial dentro del subproceso del servidor en ejecución, ya que no hay documentados mecanismos de sincronización para accesos concurrentes. Pregunta Q-2c2278884fa11b21 (abierta)
Ruta de uso
La secuencia regular de una transferencia de escritura se lleva a cabo en los siguientes pasos:
Inicialización: al recibirse una solicitud de escritura (por ejemplo, RequestFileTransfer con kReplace según [SWS_DM_01313]), se configura una DataTransferWriteSession. En este proceso, el manejador específico de la aplicación para operaciones de escritura se registra a través de constructores de plantilla (AUTOSAR_AP_SWS_Diagnostics §8.10 «Context of RequestFileTransfer»).
Transferencia de bloques de datos: para cada solicitud entrante del servicio UDS TransferData (0x36), la instancia del servidor de diagnóstico llama al método Write de la clase de manejador registrada ([SWS_DM_01317]). Este paso se repite cíclicamente para todos los bloques de la transferencia.
Finalización de la sesión: tras la transferencia completa, el servidor de diagnóstico recibe RequestTransferExit (0x37) y, a continuación, llama al método Exit de la clase de manejador ([SWS_DM_01318]).
Limpieza: tras una finalización exitosa o en caso de interrupción prematura, el objeto de sesión se destruye ([SWS_DM_01556]).
Diagrama de secuencia: flujo típico de una transferencia de datos de escritura a través de las instancias involucradas. Fuentes: [SWS_DM_01317], [SWS_DM_01318], [SWS_DM_01556].
Escenarios de error
En ara::diag::DataTransferWriteSession, el tratamiento de errores y la fiabilidad se basan fundamentalmente en la seguridad estática de tipos y la seguridad frente a excepciones:
Prevención de estados de objeto no válidos: la eliminación del constructor por defecto ([SWS_DM_01339]) evita que puedan existir objetos de sesión no inicializados sin un manejador vinculado. La prohibición de operaciones de copia ([SWS_DM_01559], [SWS_DM_01560]) descarta estados inconsistentes por múltiples relaciones de propiedad ya en tiempo de compilación.
Seguridad frente a excepciones al mover y destruir: La declaración del constructor de movimiento ([SWS_DM_01557]), de la asignación por movimiento ([SWS_DM_01558]) y del destructor ([SWS_DM_01556]) como noexcept garantiza que no se lancen excepciones durante las transferencias de recursos ni durante el desmantelamiento de la sesión en tiempo de ejecución.
Cancelación prematura: Si una transferencia falla prematuramente, el destructor noexcept asegura que el objeto de sesión también pueda limpiarse de forma fiable en el marco del desenrollado de la pila por excepciones ([SWS_DM_01556]).
Esta guía se basa en los documentos de especificación de AUTOSAR Adaptive Platform Release R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán