Позволяет приложениям активно предоставлять содержимое файлов и каталогов при UDS-запросах на чтение.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 1ed24b3e3197ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Позволяет приложениям активно предоставлять содержимое файлов и каталогов при UDS-запросах на чтение.
Класс ara::diag::DataTransferReadByPushHandler служит базовым интерфейсом для операций передачи при чтении по UDS, при которых приложение активно пакетирует и предоставляет содержимое файлов [SWS_DM_01515]. Блоки данных последовательно передаются через Read(), после чего сессия передачи корректно завершается через ExitRead()[SWS_DM_01523]. Каждый обработчик строго привязан ровно к одной сессии передачи, вследствие чего операции копирования запрещены. В качестве важнейшего условия жизненного цикла экземпляр ни в коем случае не должен уничтожаться до вызова ExitRead()[SWS_DM_01519].
Контекст
Класс ara::diag::DataTransferReadByPushHandler функционирует как базовый и интерфейсный класс для диагностических передач данных, инициируемых такими запросами, как RequestReadFile или RequestReadDirectory[SWS_DM_01515]. Лежащий в основе шаблон передачи базируется на принципе push: данные файлов или каталогов активно пакетируются конкретной реализацией приложения и передаются в Diagnostic Management (DM) AUTOSAR_AP_SWS_Diagnostics §8.10.3 «Class: DataTransferReadByPushHandler». Взаимодействие происходит между внешним UDS-клиентом, платформенным компонентом ara::diag и конкретной реализацией обработчика в приложении.
Поскольку DataTransferReadByPushHandler спроектирован как абстрактный базовый класс, конструктор без параметров имеет защищенную видимость (protected) [SWS_DM_01516]. Инстанциирование выполняется в контексте производного класса внутри приложения. Экземпляры строго привязаны ровно к одной сессии передачи файлов («one way usage»); как следствие, конструктор копирования [SWS_DM_01518] и оператор присваивания с копированием [SWS_DM_01521] явно удалены (=delete). Передача прав владения возможна через операции перемещения, поскольку move-конструктор [SWS_DM_01517] и move-присваивание [SWS_DM_01520] представлены стандартными реализациями и объявлены безопасными относительно исключений (noexcept).
Для уничтожения обработчика спецификация определяет строгое предусловие: экземпляр ни в коем случае не должен уничтожаться до завершения сеанса вызовом ExitRead()[SWS_DM_01519], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.1.2 «Destructor». В отношении многопоточности виртуальные методы класса специфицированы как потоконебезопасные («not thread-safe») [SWS_DM_01522], [SWS_DM_01523], поэтому одновременные обращения со стороны платформы должны синхронизироваться или выполняться последовательно.
Путь использования
Рабочий процесс подразделяется на повторяющееся предоставление фрагментов данных и упорядоченное завершение сеанса. После запуска операции чтения ara::diag повторно вызывает метод Read()[SWS_DM_01522], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.3.2 «Read». При этом фреймворк передает ориентировочный рекомендуемый размер возвращаемых данных в байтах (recommended_number_bytes_to_return) для достижения оптимальной пропускной способности, а также контекст запроса (MetaInfo) и CancellationHandler. Приложение формирует пакет данных и передает владение им через ara::core::Future<ara::core::Vector<ara::core::Byte>> в Diagnostic Management, которое вставляет полезные данные после счетчика последовательности блоков в ответное сообщение UDS [SWS_DM_01522].
Как только все блоки данных переданы или сессия должна быть завершена, ara::diag вызывает метод ExitRead()[SWS_DM_01523], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.3.1 «ExitRead». Наряду с причиной завершения (DataTransferExitType exit_type) через transfer_request_parameter_record передаются специфичные для производителя параметры запроса. Время жизни этого span параметров жестко привязано к моменту выполнения соответствующего promise или отмены обработки [SWS_DM_01523]. После возврата окончательного набора параметров ответа через Future передача считается завершенной, тем самым выполняется условие для безопасного уничтожения объекта обработчика [SWS_DM_01519].
Диаграмма последовательности: типичная последовательность взаимодействия между Diagnostic Management и обработчиком при передаче чтения и завершении передачи. Источники: [SWS_DM_01522], [SWS_DM_01523], [SWS_DM_01519]
Сценарии ошибок
Если во время компоновки блоков данных или при завершении сеанса возникает ошибка, о ней асинхронно сообщается через соответствующий ara::core::Future. Вместо структуры положительного ответа future предоставляется с кодом ошибки (ara::core::ErrorCode) из диапазона DiagUdsNrcErrc, соответствующим подходящему коду отрицательного ответа (NRC) согласно ISO 14229-1 [SWS_DM_01522], [SWS_DM_01523].
Если диагностический диалог прерывается или клиент отправляет запрос на отмену, вступает в действие переданный CancellationHandler. Реализация может запросить текущий статус отмены через cancellation_handler.IsCanceled() или зарегистрировать функцию обратного вызова через cancellation_handler.SetNotifier(), которая срабатывает при отмене коммуникации [SWS_DM_01522], [SWS_DM_01523]. Выполнение или отмена promise одновременно знаменует окончание срока действия набора параметров в ExitRead()[SWS_DM_01523].
Настоящее руководство основано на спецификации AUTOSAR Adaptive Platform версии 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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: eefe02828ffeПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Виртуальный метод ExitRead завершает текущий сеанс передачи данных в контексте обработчика диагностики [SWS_DM_01523]. Функция работает асинхронно и возвращает ara::core::Future с данными ответа в виде байтового вектора SWS Diagnostics §8.10.3.1.3.1 «ExitRead».
Параметры и контекст вызова
exit_type (DataTransferExitType): указывает причину завершения передачи [SWS_DM_01523].
transfer_request_parameter_record (ara::core::Span<const ara::core::Byte>): содержит специфические для производителя параметры для поддержки передачи данных. Базовые данные должны оставаться валидными до тех пор, пока не будет выполнено соответствующее promise или пока обработка не будет отменена [SWS_DM_01523].
cancellation_handler (CancellationHandler): служит для проверки статуса отмены с помощью IsCanceled() или для регистрации функции обратного вызова через SetNotifier() в случае прерывания сеанса [SWS_DM_01523].
Обработка ошибок и возвращаемые значения
В случае успеха Future предоставляет выходные данные, которые размещаются в положительном UDS-ответе после SID как transferResponseParameterRecord[SWS_DM_01523]. При сбое Future дополняется подходящим Negative Response Code (NRC) из DiagUdsNrcErrc согласно ISO 14229-1 [SWS_DM_01523].
Параллелизм и жизненный цикл
Метод специфицирован как исключебно-безопасный (exception safe), но явно непотокобезопасный (not thread-safe) [SWS_DM_01523]. В отношении жизненного цикла объекта действует обязательное условие последовательности: экземпляр DataTransferReadByPushHandler ни в коем случае не должен уничтожаться до вызова ExitRead()[SWS_DM_01519]. Аналогичные требования действуют для связанных классов-обработчиков при передаче данных [SWS_DM_01510][SWS_DM_01499].
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: fcd7efa833dfПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Чисто виртуальный метод Read класса ara::diag::DataTransferReadByPushHandler служит для асинхронного считывания блоков данных для информации о файлах или каталогах из приложения [SWS_DM_01522]. Приложение компонует соответствующий фрагмент данных и передаёт владение им как ara::core::Vector<ara::core::Byte> диагностическому модулю.
Использование и контекст вызова
Вызов выполняется Diagnostic Server для предоставления данных ответа для UDS-клиентов через заголовочный файл ara/diag/data_transfer.h[SWS_DM_01522]. Метод ожидает три параметра:
recommended_number_bytes_to_return: рекомендуемое количество байтов для оптимальной пропускной способности. Это значение, предположительно, ориентируется на внутренний размер буфера или PDU в Diagnostic Management. Вопрос Q-1a8c1270b192b96f (открытый)
cancellation_handler: обеспечивает опрос статуса отмены через cancellation_handler.IsCanceled() или регистрацию уведомления с помощью cancellation_handler.SetNotifier() при обрывах соединения.
В качестве возвращаемого значения служит ara::core::Future<ara::core::Vector<ara::core::Byte>>. При успешной обработке данные встраиваются в положительное ответное сообщение как transferResponseParameterRecord после счётчика последовательности [SWS_DM_01522].
Обработка ошибок и параллелизм
Если обработка завершается неудачно, future выполняется с кодом ошибки из DiagUdsNrcErrc, который отображает подходящий NRC согласно ISO 14229-1 [SWS_DM_01522]. Если интерфейс службой ещё не предоставляется или больше не предоставляется с помощью offer(), Diagnostic Manager отвечает на запрос с NRC 0x94 (ResourceTemporarilyNotAvailable) [SWS_DM_01257]. Метод специфицирован как исключебно-безопасный (exception safe), но как непотокобезопасный (not thread-safe) [SWS_DM_01522], поэтому одновременные вызовы должны синхронизироваться на стороне приложения.
Взаимодействие
Принцип push этого интерфейса дополняет альтернативные механизмы чтения диагностического модуля: метод pull через ara::diag::DataTransferReadByPullHandler::Read[SWS_DM_01513] с предопределённой областью памяти, а также предоставление разделяемой области памяти с помощью ReleaseHandler[SWS_DM_01504].
Этот текст был сгенерирован ИИ.
Руководство разработчика реализации в подготовке (сложность I1)
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 · Немецкий оригинал