Инкапсулирует активные сеансы диагностического чтения и перенаправляет входящие передачи данных зарегистрированным обработчикам.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 9db606b147f6ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Инкапсулирует активные сеансы диагностического чтения и перенаправляет входящие передачи данных зарегистрированным обработчикам.
Класс служит для инкапсуляции и структурированного управления всеми вариантами диагностических передач при чтении в адаптивном модуле диагностики AUTOSAR согласно [SWS_DM_01548]. После успешного запуска операции чтения экземпляр диагностического сервера делегирует входящие запросы на последовательную передачу блоков данных и на завершение сеанса зарегистрированным методам обработчика чтения [SWS_DM_01317]. За счет целенаправленного отключения операций копирования при одновременной поддержке семантики перемещения класс обеспечивает однозначное закрепление владения базовым сеансом передачи.
Контекст
Класс ara::diag::DataTransferReadSession представляет собой инкапсуляцию всех вариантов диагностического чтения блоков данных в адаптивном модуле диагностики [SWS_DM_01548]. В рамках стандартизированных сервисов UDS, таких как RequestFileTransfer (0x38), TransferData (0x36) и RequestTransferExit (0x37), класс сеанса выступает связующим звеном между внутренней средой выполнения диагностического сервера и специфичными для приложения обработчиками чтения SWS Diagnostics §7 «Realization of TransferData and RequestTransferExit». Он гарантирует, что текущие операции считывания — например, для файлов через ReadFile[SWS_DM_01314] или каталогов через ReadDir[SWS_DM_01315] — управляются изолированно и перенаправляются соответствующим обработчикам.
Экземпляр ara::diag::DataTransferReadSession имеет время жизни, строго привязанное к сеансу передачи. Создание через конструктор по умолчанию явно запрещено [SWS_DM_01549]. Вместо этого сеанс инициализируется через специализированные шаблонные конструкторы, которые регистрируют специфичные для приложения обработчики SWS Diagnostics §7 «Realization of TransferData and RequestTransferExit». На практике создание экземпляра, вероятно, обычно выполняется сервером диагностики или обработчиком сервиса при инициации передачи файла. Вопрос Q-b0706bcd28c702c6 (открытый)
Чтобы исключить множественное владение или несогласованные состояния сеанса, ara::diag::DataTransferReadSession спроектирован как некопируемый единичный экземпляр: как конструктор копирования [SWS_DM_01553], так и оператор присваивания копированием [SWS_DM_01554] удалены (=delete). Передача владения предусмотрена исключительно через семантику перемещения. Конструктор перемещения [SWS_DM_01551] и оператор присваивания перемещением [SWS_DM_01552] определены как noexcept=default. Уничтожение происходит детерминированно через деструктор [SWS_DM_01550], который также объявлен как noexcept=default. По-видимому, завершение передачи через RequestTransferExit приводит к освобождению объекта. Вопрос Q-c1999fd1f283a007 (открытый)
Путь использования
Типичный процесс сеанса передачи при чтении делится на три последовательные фазы:
Инициализация: внешний диагностический клиент отправляет RequestFileTransfer с режимом чтения, таким как ReadFile (0x04) [SWS_DM_01314] или ReadDir (0x05) [SWS_DM_01315]. При этом создается экземпляр сеанса и регистрируется обработчик чтения.
Передача данных: входящие диагностические запросы типа TransferData (0x36) диагностический сервер обрабатывает путем вызова соответствующего метода Read обработчика, зарегистрированного через шаблонные конструкторы [SWS_DM_01317]. Это происходит итеративно для каждого запрошенного блока данных.
Завершение: как только все данные переданы, клиент отправляет RequestTransferExit (0x37). После этого диагностический сервер вызывает метод Exit зарегистрированного обработчика для корректного завершения операции чтения [SWS_DM_01318].
Поскольку ara::diag::DataTransferReadSession объявлен как final, а конструктор по умолчанию [SWS_DM_01549] отсутствует, ошибочное создание без зарегистрированного обработчика предотвращается еще на этапе компиляции. Удаленные операции копирования [SWS_DM_01553] также исключают случайное дублирование состояний сеанса. Как конструктор перемещения, так и перемещающее присваивание и деструктор гарантируют абсолютную безопасность относительно исключений благодаря спецификации noexcept[SWS_DM_01551][SWS_DM_01550]. Сбой предоставления блоков данных в обработчике обрабатывается на уровне протокола в рамках UDS-коммуникации.
Настоящее руководство основано на спецификации AUTOSAR Adaptive Platform R25-11 (модуль diag) и обобщает требования к ara::diag::DataTransferReadSession.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал