Permet aux applications de fournir activement des contenus de fichiers et de répertoires lors de requêtes de lecture UDS.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 1ed24b3e3197ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Permet aux applications de fournir activement des contenus de fichiers et de répertoires lors de requêtes de lecture UDS.
La classe ara::diag::DataTransferReadByPushHandler sert d'interface de base pour les transferts de lecture UDS, dans lesquels l'application partitionne et met à disposition activement les contenus de fichiers [SWS_DM_01515]. Les blocs de données sont transmis séquentiellement via Read() et la session de transfert est ensuite close de manière ordonnée via ExitRead()[SWS_DM_01523]. Chaque handler est strictement lié à exactement une session de transfert, raison pour laquelle les opérations de copie sont interdites. En tant que condition essentielle de cycle de vie, l'instance ne doit en aucun cas être détruite avant l'appel de ExitRead()[SWS_DM_01519].
Contexte
La classe ara::diag::DataTransferReadByPushHandler fait office de classe de base et d'interface pour les transferts de données de diagnostic initiés par des requêtes telles que RequestReadFile ou RequestReadDirectory[SWS_DM_01515]. Le modèle de transfert sous-jacent repose sur le principe du push : les données de fichiers ou de répertoires sont activement partitionnées en paquets par l'implémentation spécifique de l'application et transmises à la gestion du diagnostic (Diagnostic Management, DM) AUTOSAR_AP_SWS_Diagnostics §8.10.3 « Class: DataTransferReadByPushHandler ». L'interaction a lieu entre le client UDS externe, le composant de plateforme ara::diag et l'implémentation concrète de handler de l'application.
Comme DataTransferReadByPushHandler est conçue comme une classe de base abstraite, le constructeur sans paramètre a une visibilité protégée (protected) [SWS_DM_01516]. L'instanciation s'effectue dans le contexte d'une classe dérivée au sein de l'application. Les instances sont strictement liées à exactement une session de transfert de fichiers (« one way usage ») ; en conséquence, le constructeur de copie [SWS_DM_01518] ainsi que l'opérateur d'assignation par copie [SWS_DM_01521] sont explicitement supprimés (=delete). Un transfert de propriété est possible via des opérations de déplacement, car le constructeur de déplacement [SWS_DM_01517] et l'assignation par déplacement [SWS_DM_01520] existent en tant qu'implémentations par défaut et sont déclarés sûrs vis-à-vis des exceptions (noexcept).
Pour la destruction du handler, la spécification définit une précondition stricte : une instance ne doit en aucun cas être détruite avant que la session n'ait été close via l'appel de ExitRead()[SWS_DM_01519], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.1.2 « Destructor ». En ce qui concerne la concurrence, les méthodes virtuelles de la classe sont spécifiées comme non thread-safe (« not thread-safe ») [SWS_DM_01522], [SWS_DM_01523], c'est pourquoi les accès simultanés par la plateforme doivent être synchronisés ou exécutés de manière séquentielle.
Parcours d'utilisation
Le déroulement opérationnel se divise en la mise à disposition répétitive de fragments de données et la clôture ordonnée de la session. Après l'initiation de l'opération de lecture, ara::diag appelle de manière répétée la méthode Read()[SWS_DM_01522], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.3.2 « Read ». À cette occasion, le framework transmet une valeur indicative pour la taille de retour recommandée en octets (recommended_number_bytes_to_return) afin d'obtenir un débit optimal, ainsi que le contexte de requête (MetaInfo) et un CancellationHandler. L'application génère le paquet de données et en transfère la propriété via un ara::core::Future<ara::core::Vector<ara::core::Byte>> au Diagnostic Management, qui insère les données utiles derrière le compteur de séquence de blocs dans le message de réponse UDS [SWS_DM_01522].
Dès que tous les blocs de données ont été transférés ou que la session doit être terminée, ara::diag appelle la méthode ExitRead()[SWS_DM_01523], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.3.1 « ExitRead ». Outre le motif de fin (DataTransferExitType exit_type), des paramètres de requête spécifiques au constructeur sont transmis via transfer_request_parameter_record. La durée de vie de cette vue de paramètres (span) est liée de manière obligatoire jusqu'à ce que la promesse correspondante soit résolue ou que le traitement soit interrompu [SWS_DM_01523]. Après le renvoi du jeu final de paramètres de réponse via la Future, le transfert est considéré comme terminé, ce qui remplit la condition requise pour détruire l'objet handler sans risque [SWS_DM_01519].
Diagramme de séquence : séquence d'interaction typique entre le Diagnostic Management et le handler lors d'un transfert de lecture et de la clôture du transfert. Sources : [SWS_DM_01522], [SWS_DM_01523], [SWS_DM_01519]
Scénarios d'erreur
Si une erreur survient pendant l'assemblage de blocs de données ou lors de la clôture de session, elle est signalée de manière asynchrone via le ara::core::Future correspondant. Au lieu d'une structure de réponse positive, le future est fourni avec un code d'erreur (ara::core::ErrorCode) issu de la plage DiagUdsNrcErrc, qui correspond à un code de réponse négative adéquat (Negative Response Code, NRC) selon l'ISO 14229-1 [SWS_DM_01522], [SWS_DM_01523].
Si le dialogue de diagnostic est interrompu ou si le client envoie une requête d'annulation, le CancellationHandler transmis entre en jeu. L'implémentation peut interroger l'état d'annulation actuel via cancellation_handler.IsCanceled() ou enregistrer via cancellation_handler.SetNotifier() une fonction de rappel déclenchée lors de l'interruption de la conversation [SWS_DM_01522], [SWS_DM_01523]. La résolution ou l'interruption de la promesse marque également la fin de la validité du jeu de paramètres dans ExitRead()[SWS_DM_01523].
Ce guide est basé sur la spécification AUTOSAR Adaptive Platform Release R25-11.
Reads data chunk from the application. The first or subsequent file/directory info content chunk to be sent back to the UDS client will be composed by the application and its ownership is passed as a result to ara::diag.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : eefe02828ffeProvenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La méthode virtuelle ExitRead met fin à une session de transfert de données en cours dans le contexte du gestionnaire de diagnostic [SWS_DM_01523]. La fonction s'exécute de manière asynchrone et renvoie un ara::core::Future contenant les données de réponse sous forme de vecteur d'octets SWS Diagnostics §8.10.3.1.3.1 « ExitRead ».
Paramètres et contexte d'appel
exit_type (DataTransferExitType) : spécifie la raison de l'arrêt du transfert [SWS_DM_01523].
transfer_request_parameter_record (ara::core::Span<const ara::core::Byte>) : contient des paramètres spécifiques au constructeur pour assister le transfert de données. Les données sous-jacentes doivent rester valides jusqu'à ce que la promesse correspondante soit satisfaite ou que le traitement soit interrompu [SWS_DM_01523].
meta_info (MetaInfo const &) : transmet les méta-informations de la requête de diagnostic [SWS_DM_01523].
cancellation_handler (CancellationHandler) : sert à vérifier l'état d'interruption au moyen de IsCanceled() ou à enregistrer une fonction de rappel via SetNotifier() en cas d'interruption de session [SWS_DM_01523].
Gestion des erreurs et valeurs de retour
En cas de succès, le Future fournit les données de sortie qui sont placées sous forme de transferResponseParameterRecord après le SID dans la réponse UDS positive [SWS_DM_01523]. En cas d'échec, le Future est complété avec un code de réponse négative (NRC) approprié issu de DiagUdsNrcErrc conformément à l'ISO 14229-1 [SWS_DM_01523].
Concurrence et cycle de vie
La méthode est spécifiée comme sûre vis-à-vis des exceptions (exception safe), mais explicitement non sûre pour les threads (not thread-safe) [SWS_DM_01523]. Concernant le cycle de vie de l'objet, il existe une condition d'ordre contraignante : une instance de DataTransferReadByPushHandler ne doit en aucun cas être détruite avant l'appel de ExitRead()[SWS_DM_01519]. Des exigences analogues s'appliquent aux classes de gestionnaires apparentées dans le transfert de données [SWS_DM_01510][SWS_DM_01499].
Ce texte a été généré par une IA sur la base de la spécification AUTOSAR Adaptive R25-11.
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
MetaInfo 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.
A Future, which either gets readied to OperationOutput (transfer ResponseParameterRecord 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.
Reads data chunk from the application. The first or subsequent file/directory info content chunk to be sent back to the UDS client will be composed by the application and its ownership is passed as a result to ara::diag.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : fcd7efa833dfProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La méthode purement virtuelle Read de la classe ara::diag::DataTransferReadByPushHandler sert à la lecture asynchrone de blocs de données pour des informations de fichier ou de répertoire à partir de l'application [SWS_DM_01522]. L'application constitue le fragment de données (chunk) respectif et en transmet la propriété sous forme de ara::core::Vector<ara::core::Byte> au module de diagnostic.
Utilisation et contexte d'appel
L'appel est effectué par le serveur de diagnostic afin de fournir des données de réponse pour les clients UDS via le fichier d'en-tête ara/diag/data_transfer.h[SWS_DM_01522]. La méthode attend trois paramètres :
recommended_number_bytes_to_return : le nombre d'octets recommandé pour un débit optimal. Cette valeur devrait probablement s'orienter sur la taille interne de tampon ou de PDU de Diagnostic Management. Question Q-1a8c1270b192b96f (ouverte)
meta_info : méta-informations supplémentaires de la requête de diagnostic entrante (MetaInfo).
cancellation_handler : permet d'interroger l'état d'annulation via cancellation_handler.IsCanceled() ou d'enregistrer une notification au moyen de cancellation_handler.SetNotifier() en cas d'interruption de connexion.
Un ara::core::Future<ara::core::Vector<ara::core::Byte>> sert de valeur de retour. En cas de traitement réussi, les données sont intégrées sous forme de transferResponseParameterRecord derrière le compteur de séquence dans le message de réponse positif [SWS_DM_01522].
Gestion des erreurs et concurrence
Si le traitement échoue, le future est résolu avec un code d'erreur issu de DiagUdsNrcErrc qui représente un NRC approprié conformément à l'ISO 14229-1 [SWS_DM_01522]. Si l'interface n'est pas encore ou n'est plus proposée par le service au moyen de offer(), le gestionnaire de diagnostic répond à la requête avec le NRC 0x94 (ResourceTemporarilyNotAvailable) [SWS_DM_01257]. La méthode est spécifiée comme sûre vis-à-vis des exceptions (exception safe), mais non sûre pour les threads (not thread-safe) [SWS_DM_01522], raison pour laquelle les appels simultanés doivent être synchronisés côté application.
Interaction
Le principe push de cette interface complète d'autres mécanismes de lecture du module de diagnostic : le procédé pull via ara::diag::DataTransferReadByPullHandler::Read[SWS_DM_01513] avec une zone mémoire prédéfinie ainsi que la mise à disposition d'une zone mémoire partagée au moyen de ReleaseHandler[SWS_DM_01504].
The recommended number of bytes to send back to DM in order to
bytes_to_return
get optimum data throughput.
meta_info
MetaInfo 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.
A Future, which either gets readied to ReadPushOutput (transfer ResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for a negative response message). Data in ReadPushOutput.responseData will be placed after block SequenceCounter 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 allemand