Обрабатывает и сохраняет входящие блоки данных при операциях передачи файлов с записью в приложении.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: eacdeba00b95ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Обрабатывает и сохраняет входящие блоки данных при операциях передачи файлов с записью в приложении.
Класс ara::diag::DataTransferWriteHandler служит в AUTOSAR Adaptive для обработки со стороны приложения операций передачи файлов с записью, инициированных RequestWriteFile в режимах AddFile, ResumeFile или ReplaceFile[SWS_DM_01539]. Входящие пакеты данных асинхронно записываются в память через Write(), после чего сессия завершается с помощью ExitWrite(). Экземпляр строго привязан к одной сессии передачи и ни в коем случае не должен уничтожаться до вызова ExitWrite()[SWS_DM_01541].
Контекст
Абстрактный базовый класс ara::diag::DataTransferWriteHandler определяет в AUTOSAR Adaptive Platform интерфейс для операций передачи файлов с записью [SWS_DM_01539] (AUTOSAR_AP_SWS_Diagnostics §8.10.6 «Class: DataTransferWriteHandler»). Он служит для обработки со стороны приложения передач данных, инициированных в рамках RequestWriteFile через рабочие режимы AddFile, ResumeFile или ReplaceFile.
Внутри диагностической архитектуры обработчик взаимодействует с внешним UDS-клиентом, диагностическим связующим ПО (middleware) и приложением. Клиент передает сегментированные блоки данных, которые принимаются производной реализацией обработчика и сохраняются в памяти приложения [SWS_DM_01546]. Предположительно, Diagnostic Management платформы берет на себя координацию протокола UDS и передает полезные данные через интерфейс обработчика целевому приложению. Вопрос Q-484dc9dd80e56af4 (открытый)
Жизненный цикл
Инстанциирование ara::diag::DataTransferWriteHandler выполняется исключительно специализированными подклассами приложения: конструктор без параметров определен с protected и noexcept=default[SWS_DM_01540], что предотвращает прямое инстанциирование базового класса. Экземпляр обработчика строго привязан к одной сессии передачи файлов («one way usage i.e. per single file transfer session»). По этой причине конструктор копирования [SWS_DM_01544] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.2.1 «DataTransferWriteHandler») и оператор присваивания с копированием [SWS_DM_01545] удалены (=delete).
Для удаления экземпляра действует обязательное предусловие: экземпляр этого класса ни в коем случае не должен уничтожаться до того, как будет вызван метод ExitWrite()[SWS_DM_01541] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.1.2 «Destructor»). Только после полного выполнения ExitWrite() разрешается вызывать виртуальный деструктор ~DataTransferWriteHandler(). Функции-члены и деструктор специфицированы как непотокобезопасные (not thread-safe) [SWS_DM_01541], [SWS_DM_01546], [SWS_DM_01547].
Диаграмма состояний: жизненный цикл и последовательность вызовов экземпляра DataTransferWriteHandler. Источники: [SWS_DM_01541], [SWS_DM_01544].
Путь использования
Штатный процесс передачи с записью включает пошаговый прием блоков данных и последующее завершение сеанса:
Для каждого поступающего сегмента данных диагностическая система вызывает чисто виртуальный метод Write()[SWS_DM_01546] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.3.2 «Write»). Данные передаются как ara::core::Span<ara::core::Byte>. Срок действия этой области памяти сохраняется до тех пор, пока не будет выполнено соответствующее Promise или операция не будет отменена. Приложение добавляет данные во внутренний буфер и возвращает ara::core::Future<void>.
После того как все сегменты были переданы, платформа вызывает чисто виртуальный метод ExitWrite()[SWS_DM_01547] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.3.1 «ExitWrite»). В качестве параметров передаются причина завершения (DataTransferExitType), специфичные для автопроизводителя параметры (transferRequestParameterRecord), metaInfo, а также CancellationHandler.
Метод ExitWrite() возвращает ara::core::Future<ara::core::Vector<ara::core::Byte>>. При успешном завершении содержащиеся в нем данные вставляются в положительное ответное сообщение UDS позади идентификатора сервиса как transferResponseParameterRecord[SWS_DM_01547].
Диаграмма последовательности: последовательность вызовов операций Write и ExitWrite во время сеанса передачи. Источники: [SWS_DM_01546], [SWS_DM_01547].
Сценарии ошибок
Ошибки в процессе обработки данных и передачи обрабатываются с помощью стандартизированных возвращаемых значений и механизмов отмены:
Если запись блока данных или завершение передачи завершается сбоем, соответствующее Future предоставляется с ara::core::ErrorCode из DiagUdsNrcErrc[SWS_DM_01546], [SWS_DM_01547]. Это приводит к генерации клиенту соответствующего отрицательного ответа UDS (NRC согласно ISO 14229-1).
Оба метода предоставляют CancellationHandler. Приложение может с помощью cancellationHandler.IsCanceled() проверить, была ли отменена беседа, или с помощью cancellationHandler.SetNotifier() зарегистрировать функцию уведомления, которая выполняется при отмене беседы [SWS_DM_01546], [SWS_DM_01547].
Если экземпляр уничтожается до вызова ExitWrite(), имеет место нарушение специфицированного правила жизненного цикла [SWS_DM_01541], что, предположительно, приводит к неопределенному состоянию системы и неполным файлам. Вопрос Q-cc032c11ac89a5b1 (открытый) Кроме того, незащищенный параллельный доступ приводит к несогласованности данных, поскольку интерфейс явно не является потокобезопасным.
Данное руководство создано ассистентом курации на базе ИИ на основе AUTOSAR R25-11.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 459b3563e8d0Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Виртуальная функция-член ara::diag::DataTransferWriteHandler::ExitWrite завершает текущую сессию передачи данных для операций записи [SWS_DM_01547] (AUTOSAR_AP_SWS_Diagnostics §8.10.6.1.3.1 «ExitWrite», заголовочный файл #include "ara/diag/data_transfer.h"). Параметры вызова включают:
exitType: определяет причину завершения сессии [SWS_DM_01547].
transferRequestParameterRecord: параметры, специфичные для производителя транспортного средства, для поддержки передачи данных; валидность span должна сохраняться до тех пор, пока соответствующий Promise не будет выполнен или операция не будет прервана [SWS_DM_01547].
cancellationHandler: позволяет опрашивать статус отмены через cancellationHandler.IsCanceled(), а также регистрировать уведомитель через cancellationHandler.SetNotifier()[SWS_DM_01547].
Функция работает асинхронно и возвращает ara::core::Future<ara::core::Vector<ara::core::Byte>>, результирующие данные которого в случае успеха вставляются как transferResponseParameterRecord после SID в положительное ответное сообщение [SWS_DM_01547].
Обработка ошибок
Если завершение завершается сбоем, Future необходимо предоставить с соответствующим Negative Response Code (NRC) согласно ISO 14229-1 через DiagUdsNrcErrc[SWS_DM_01547]. Функция специфицирована как noexcept, а также как безопасная относительно исключений (exception safe) [SWS_DM_01547].
Параллелизм и взаимодействие
Реализация не является потокобезопасной (not thread-safe) [SWS_DM_01547]. В отношении жизненного цикла объекта действует строгое условие последовательности: экземпляр класса обработчика разрешается уничтожать только после того, как был вызван ExitWrite()[SWS_DM_01541].
Это указание по использованию было создано автоматически на основе спецификаций AUTOSAR для релиза R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
This parameter record contains parameter(s), which are required 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.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. 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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: a81be0f54500ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод Write интерфейса ara::diag::DataTransferWriteHandler служит для добавления принятых блоков данных к области памяти приложения при передаче файлов по UDS [SWS_DM_01546]. Вызов выполняется экземпляром Diagnostic Server, когда в рамках операции, инициированной посредством RequestFileTransfer (0x38), принимается запрос UDS TransferData (0x36) [SWS_DM_01317].
Параметры и семантика
Записываемое содержимое файла передается через requestData как ara::core::Span<ara::core::Byte>; указанный буфер остается действительным до тех пор, пока соответствующий Promise не будет выполнен или обработка не будет отменена [SWS_DM_01546]. Параметр metaInfo предоставляет метаинформацию диагностического запроса. Через cancellationHandler можно проверить текущий статус прерывания с помощью IsCanceled или зарегистрировать callback уведомления через SetNotifier[SWS_DM_01546].
Обработка ошибок и параллелизм
Результат возвращается асинхронно в виде ara::core::Future<void>. В случае успеха Future завершается пустым; при ошибках он должен быть дополнен подходящим Negative Response Code (NRC) из DiagUdsNrcErrc согласно ISO 14229-1 [SWS_DM_01546]. Функция специфицирована как exception safe, однако явно как not thread-safe[SWS_DM_01546]; поэтому Diagnostic Server, предположительно, гарантирует последовательные вызовы для одной и той же сессии. Вопрос Q-e60d55fe09b9a2c5 (открытый)
Взаимодействие и последовательность выполнения
Обработчик записи регистрируется через шаблонные конструкторы внутри DataTransferWriteSession[SWS_DM_01317]. Как только передача завершается с помощью RequestTransferExit (0x37), сервер вызывает метод Exit того же обработчика [SWS_DM_01318]. Элемент отличается от методов записи, связанных с DID, определенных в [SWS_DM_00598] или [SWS_DM_00637].
Этот текст был создан автоматически. Технические утверждения подтверждены ссылками на спецификацию.
Руководство разработчика реализации в подготовке (сложность I1)
The first or subsequent file content chunk received from the UDS client to be written into the file. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал