Permite la lectura de archivos o directorios completos mediante áreas de memoria compartida en solicitudes de diagnóstico.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 4c654c39d186ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Permite la lectura de archivos o directorios completos mediante áreas de memoria compartida en solicitudes de diagnóstico.
La clase ara::diag::DataTransferReadSharedDataHandler sirve para procesar transferencias de datos de diagnóstico de lectura para contenidos de archivos y directorios a través de memoria compartida ([SWS_DM_01497]). Tras el inicio de la sesión, la implementación de la aplicación proporciona la totalidad de los datos como una Shared Data View mediante Read() y mantiene reservado el búfer asignado hasta la notificación de liberación emitida por el ReleaseHandler ([SWS_DM_01504]). Antes de destruir el objeto específico del manejador, la sesión de transferencia debe completarse obligatoriamente mediante ExitRead(). El objeto está destinado exclusivamente a una única sesión de transferencia y, por lo tanto, puede moverse, pero no copiarse.
Contexto
La clase ara::diag::DataTransferReadSharedDataHandler pertenece al área de diagnóstico de AUTOSAR Adaptive Platform en el módulo diag (AUTOSAR_AP_SWS_Diagnostics §8.10.5 «Class: DataTransferReadSharedDataHandler»). Su cometido principal consiste en procesar transferencias de datos para contenidos de archivos y directorios que se activan mediante solicitudes UDS como RequestReadFile o RequestReadDirectory ([SWS_DM_01497]). En lugar de pasos de copia individuales para cada bloque de transferencia, este manejador permite a la implementación específica de la aplicación suministrar la totalidad de los datos como un área de memoria contigua y compartida.
En el flujo global del sistema cooperan tres actores principales: el cliente UDS externo envía la solicitud de lectura a la unidad de control. El entorno de tiempo de ejecución de diagnóstico AraDiag recibe la solicitud y redirige la ejecución a la implementación concreta de DataTransferReadSharedDataHandler ([SWS_DM_01497], [SWS_DM_01504]). Un tercer interlocutor, el ReleaseHandler, señala a la aplicación en cuanto los recursos de memoria compartida dejan de ser necesarios para la plataforma y pueden liberarse ([SWS_DM_01504]).
Diagrama de contexto: interacción entre el cliente UDS, el entorno de tiempo de ejecución AraDiag y la implementación del manejador del lado de la aplicación. Fuentes: [SWS_DM_01497], [SWS_DM_01504], [SWS_DM_01505]
Para la destrucción del objeto existe una condición previa estricta: una instancia de esta clase no debe destruirse bajo ningún concepto antes de que la sesión de transferencia haya finalizado formalmente mediante la invocación de ExitRead() ([SWS_DM_01499], AUTOSAR_AP_SWS_Diagnostics §8.10.5.1.1.3 «Destructor»). Solo tras completar este tratamiento final puede ejecutarse el destructor virtual ([SWS_DM_01499]).
En lo que respecta a la concurrencia, los métodos centrales Read() y ExitRead() se designan como no seguros para hilos (not thread-safe), mientras que todas las funciones de la interfaz garantizan seguridad ante excepciones (exception safe) ([SWS_DM_01498], [SWS_DM_01504], [SWS_DM_01505]).
Ruta de uso
La secuencia de invocaciones típica de una transferencia de datos con áreas de memoria compartida comprende varios pasos:
Suministro de los Shared Data:AraDiag invoca el método puramente virtual Read() y transfiere un ReleaseHandler, MetaInfo así como un CancellationHandler ([SWS_DM_01504]). La aplicación asigna todo el contenido del archivo o directorio y devuelve la vista compartida sobre el mismo como ara::core::Span<ara::core::Byte> a través de un ara::core::Future a AraDiag ([SWS_DM_01504]).
Retención y liberación de memoria: la aplicación debe mantener obligatoriamente intacta la memoria asignada hasta que el ReleaseHandler indique que el área de memoria se puede liberar de forma segura ([SWS_DM_01504]). Para ello, la aplicación puede registrar una función de notificación en ReleaseHandler o consultar activamente su estado ([SWS_DM_01504]). Interpretación: probablemente, la señalización a través del ReleaseHandler la realiza AraDiag de forma asíncrona tan pronto como los bloques de datos se hayan transmitido con éxito al cliente UDS. Pregunta Q-0fbc1c5e667c9a68 (abierta)
Finalización de sesión: para finalizar la transmisión, AraDiag invoca el método ExitRead() ([SWS_DM_01505], AUTOSAR_AP_SWS_Diagnostics §8.10.5.1.3.1 «ExitRead»). Además del motivo de finalización (DataTransferExitType), se transfieren parámetros de solicitud específicos del fabricante del vehículo, cuya vida útil está garantizada hasta el cumplimiento del promise de resultado ([SWS_DM_01505]). La aplicación devuelve los datos de respuesta a través de un ara::core::Future<ara::core::Vector<ara::core::Byte>> ([SWS_DM_01505]).
Destrucción del objeto: tras la invocación correcta de ExitRead(), la instancia del manejador se puede liberar y destruir ([SWS_DM_01499]).
Diagrama de secuencias: secuencia de pasos desde el suministro de datos mediante Read(), pasando por la liberación de memoria, hasta la finalización mediante ExitRead(). Fuentes: [SWS_DM_01499], [SWS_DM_01504], [SWS_DM_01505]
Escenarios de error
Si se producen errores durante el suministro de los datos o al finalizar la transmisión, estos se notifican a través del ara::core::Future correspondiente con un ara::core::ErrorCode perteneciente al dominio DiagUdsNrcErrc conforme a ISO 14229-1 ([SWS_DM_01504], [SWS_DM_01505]).
Otro escenario lo constituye la cancelación de una conversación de diagnóstico en curso. Ambos métodos reciben un CancellationHandler ([SWS_DM_01504], [SWS_DM_01505]). La aplicación puede comprobar de manera síncrona el estado de cancelación a través de cancellation_handler.IsCanceled() o definir una función de notificación mediante cancellation_handler.SetNotifier() para reaccionar inmediatamente en caso de cancelación anticipada ([SWS_DM_01504], [SWS_DM_01505]).
Una infracción de la condición previa relativa al destructor —si el objeto se destruye antes de que se haya invocado ExitRead()— contradice el requisito [SWS_DM_01499] y da lugar a estados erróneos del programa.
Esta guía de clases se basa en la especificación de AUTOSAR Adaptive Platform Release R25-11.
Provides the whole data to be read out from the application in form of a shared data view. The whole file/directory info content to be sent back to the UDS client will be allocated by the application and its shared ownership (view over the memory location) is passed as a result to AraDiag. The allocated memory must be kept until the ReleaseHandler’s notifier is invoked or the status polled, signalling that the memory, addressed by the Span now can safely be released.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 8bcba929adb6Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
La interfaz ExitRead de la clase ara::diag::DataTransferReadSharedDataHandler ([SWS_DM_01505]; encabezado ara/diag/data_transfer.h) finaliza una sesión de transferencia de datos en curso.
exit_type (DataTransferExitType): especifica el motivo para finalizar la sesión.
transfer_request_parameter_record (ara::core::Span<const ara::core::Byte>): contiene parámetros específicos del fabricante para admitir la transferencia. Los datos permanecen válidos hasta que se cumpla la Promise correspondiente o se cancele el procesamiento.
meta_info (MetaInfo const&): contiene metainformación adicional de la solicitud de diagnóstico.
cancellation_handler (CancellationHandler): permite comprobar el estado de cancelación mediante cancellation_handler.IsCanceled(), así como registrar una función de notificación a través de cancellation_handler.SetNotifier(), la cual se invoca al cancelarse la conversación.
Tratamiento de errores y valores de retorno
En caso de finalización correcta, el Future proporciona los datos de salida (transferResponseParameterRecord), que se colocan detrás del SID en la respuesta positiva [SWS_DM_01505]. En caso de error, el Future se cumple con un código de error de DiagUdsNrcErrc (NRC correspondiente según ISO 14229-1) [SWS_DM_01505].
Concurrencia y ciclo de vida
El método está declarado como noexcept (exception safe), pero se especifica explícitamente como not thread-safe[SWS_DM_01505]. Respecto al ciclo de vida del objeto, rige el requisito de que una instancia de DataTransferReadSharedDataHandler no debe destruirse bajo ninguna circunstancia antes de que se haya llamado a ExitRead() ([SWS_DM_01499]). Existen funciones de finalización y requisitos de destructor análogos para las clases afines DataTransferReadByPullHandler ([SWS_DM_01514]) y DataTransferReadByPushHandler ([SWS_DM_01523]).
Esta nota de uso fue generada por una IA y se basa en las especificaciones de la AUTOSAR Adaptive Platform.
This parameter record contains parameter(s), which are required
parameter_record
by the server to support the transfer of data. Format and length of this parameter(s) are vehicle manufacturer specific. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
meta_info
contains additional meta information of the request.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). The registered notifier is called if the current conversation is cancelled.
Returns a Future, which either gets readied to OperationOutput (transferResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in OperationOutput.response_data will be placed after SID as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
Provides the whole data to be read out from the application in form of a shared data view. The whole file/directory info content to be sent back to the UDS client will be allocated by the application and its shared ownership (view over the memory location) is passed as a result to AraDiag. The allocated memory must be kept until the ReleaseHandler’s notifier is invoked or the status polled, signalling that the memory, addressed by the Span now can safely be released.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: cba844c9db1eProcedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método Read de la interfaz ara::diag::DataTransferReadSharedDataHandler proporciona al cliente UDS datos de archivo o de directorio que se van a leer mediante una vista de memoria compartida ([SWS_DM_01504]). La llamada se realiza de forma asíncrona y devuelve un ara::core::Future con un ara::core::Span<ara::core::Byte> ([SWS_DM_01504]).
Uso y ciclo de vida
La aplicación implementadora asigna todo el contenido por sí misma y transfiere la vista a AraDiag. El área de memoria subyacente debe mantenerse obligatoriamente sin cambios hasta que su notificador señale la liberación a través del ReleaseHandler transferido o esta se consulte mediante una comprobación de estado ([SWS_DM_01504]). El ReleaseHandler debe almacenarse para el mismo cliente UDS en función del MetaInfo ([SWS_DM_01504]). A través del CancellationHandler se puede supervisar una transferencia en curso vía IsCanceled() o registrar un notificador de cancelación mediante SetNotifier() ([SWS_DM_01504]).
Tratamiento de errores y concurrencia
En caso de éxito, los datos se envían como transferResponseParameterRecord después del blockSequenceCounter ([SWS_DM_01504]). Si la lectura falla, el Future debe completarse con un código de error adecuado de DiagUdsNrcErrc conforme a ISO 14229-1 ([SWS_DM_01504]). Si la interfaz de la aplicación aún no se ha proporcionado o ya no se proporciona mediante offer(), el servidor notifica NRC 0x94 (ResourceTemporarilyNotAvailable) ([SWS_DM_01257]). La función está especificada como noexcept y segura frente a excepciones, pero se considera no segura para hilos (not thread-safe) ([SWS_DM_01504]).
Delimitación
A diferencia de DataTransferReadByPullHandler::Read, donde los bloques de datos se copian en un búfer predeterminado ([SWS_DM_01513]), o de DataTransferReadByPushHandler::Read, que entrega vectores mediante transferencia de propiedad ([SWS_DM_01522]), este manejador transfiere todo el contenido sin copia de búfer a través de memoria compartida ([SWS_DM_01504]).
Esta nota de uso se ha generado de forma automatizada sobre la base del estándar AUTOSAR.
The release shared resource handler to be stored and used by the application until a new one is passed for the same meta_info (UDS client).
meta_info
Contains additional meta information.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). The registered notifier is called if the current conversation is cancelled.
Returns a Future, which either gets readied to ReadSharedOutput (transferResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in ReleaseSharedHandler.responseData will be placed after the blockSequenceCounter as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán