Позволяет адаптивным приложениям формировать динамические списки доступа и шаблоны служб для диагностических служб.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: d14f1d69eb64ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Позволяет адаптивным приложениям формировать динамические списки доступа и шаблоны служб для диагностических служб.
Класс служит адаптивным приложениям для создания и конфигурации динамических списков доступа для диагностических служб [SWS_DM_01156]. После опционального предварительного выделения памяти он создает через такие методы, как MakeServiceBuilder, экземпляры для определения шаблонов отдельных идентификаторов служб или последовательностей байтов [SWS_DM_01164]. Все функции-члены объявлены как noexcept исключебно-безопасными, тогда как модифицирующие операции должны быть защищены со стороны приложения от параллельного доступа [SWS_DM_01163].
Контекст
Класс ara::diag::DiagnosticServiceDynamicAccessList служит адаптивному приложению (AA) для формирования динамического списка доступа (DynamicAccessList) для диагностических служб [SWS_DM_01156]. Он выступает в роли фабрики и модуля управления для шаблонов служб, создавая экземпляры DynamicAccessListDiagServiceBuilder[SWS_DM_01164], [SWS_DM_01165]. В архитектуре приложение напрямую взаимодействует со списком для определения правил доступа на основе идентификаторов служб (SID) или последовательностей байтов, которые образуют основу для динамического контроля доступа в диагностической подсистеме SWS Diagnostics §8.13.1 «Class: DiagnosticServiceDynamicAccessList».
Жизненный цикл
Экземпляры DiagnosticServiceDynamicAccessList создаются через конструктор по умолчанию без параметров [SWS_DM_01157]. Класс объявлен как finalSWS Diagnostics §8.13.1 «Class: DiagnosticServiceDynamicAccessList». Он поддерживает полноценную семантику значений: объекты можно как копировать, так и перемещать, для чего предусмотрены соответствующие конструкторы копирования и перемещения [SWS_DM_01159], [SWS_DM_01160], а также операторы присваивания [SWS_DM_01161], [SWS_DM_01162]. После инициализации объект находится в состоянии приема шаблонов, пока в конце своего срока службы не будет очищен через деструктор [SWS_DM_01158].
С точки зрения параллелизма конструкторы (конструктор по умолчанию, конструкторы копирования и перемещения) явно специфицированы как потокобезопасные [SWS_DM_01157], [SWS_DM_01159], [SWS_DM_01160]. Напротив, все модифицирующие методы, такие как присваивания, резервирование памяти и создание билдеров, а также деструктор, определены как непотокобезопасные [SWS_DM_01161], [SWS_DM_01162], [SWS_DM_01163], [SWS_DM_01164], [SWS_DM_01165], [SWS_DM_01158]. Поэтому параллельный доступ к одному и тому же объекту требует синхронизации на стороне приложения.
Путь использования
Типичный процесс формирования динамического списка доступа к службам включает следующие фазы:
Предварительное выделение памяти: перед добавлением шаблонов служб приложение может предварительно зарезервировать память для всех ожидаемых шаблонов служб с помощью Reserve[SWS_DM_01163]. Передаваемые параметры numberOfServiceHeads и maxServiceHeadSize позволяют выполнить оценку необходимой памяти по наихудшему сценарию, чтобы минимизировать последующие динамические перераспределения.
Создание шаблонов: приложение вызывает MakeServiceBuilder для инициации шаблона диагностической службы. Это происходит либо на основе одного байта SID [SWS_DM_01164], либо на основе последовательности байтов serviceHead для более глубоких проверок шаблона [SWS_DM_01165].
Конфигурация шаблона: метод возвращает объект типа DynamicAccessListDiagServiceBuilder[SWS_DM_01164], который приложение затем конфигурирует.
Все открытые функции-члены и конструкторы класса объявлены как noexcept и гарантируют строгую исключебно-безопасность (exception safe) [SWS_DM_01157], [SWS_DM_01163], [SWS_DM_01164]. Ошибочные состояния в виде C++-исключений или возврата ara::core::Result с кодами ошибок на этом интерфейсе не возникают. При резервировании памяти через Reserve указанное значение может быть приблизительной оценкой; занижение оценки не приводит к аварийному завершению функции, однако, вероятно, потребует повторных выделений памяти впоследствии [SWS_DM_01163]. Вопрос Q-8d33a0315da27aed (открытый) Разработчики приложений должны гарантировать, что непотокобезопасные функции Reserve, MakeServiceBuilder и операторы присваивания никогда не выполняются одновременно над одним и тем же объектом без внешней блокировки.
Настоящее руководство основано на стандарте AUTOSAR версии R25-11 и обобщает спецификацию класса ara::diag::DiagnosticServiceDynamicAccessList.
Preallocates memory for all service heads to fit into the DynamicAccessList. The preallocation can be just estimated and may calculate just the worst case of memory needed, not exact memory size needed for data numberOfServiceHeads.
This function is used by the AA to construct a pattern for the DynamicAccessList, using only the SID.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: cfdb5e234f29ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Синхронная функция MakeServiceBuilder класса ara::diag::DiagnosticServiceDynamicAccessList служит адаптивному приложению для инициализации шаблона для динамического списка доступа (DynamicAccessList) через один идентификатор сервиса (sid) ([SWS_DM_01164]). Она принимает параметр sid типа DynamicAccessListDiagServiceBuilder::Byte и возвращает новый экземпляр DynamicAccessListDiagServiceBuilder ([SWS_DM_01164]). Посредством этого вызова приложение указывает экземпляру Diagnostic Server построить новый DynamicAccessList, начиная с переданного однобайтового шаблона ([SWS_DM_01218]; AUTOSAR_AP_SWS_Diagnostics §7.3.2.3.4 «DynamicAccessList Creation and Update»).
Взаимодействие и альтернативы
После запуска динамический список доступа всех клиентов по умолчанию пуст ([SWS_DM_01214]). Помимо этой функции приложению доступна перегрузка со строкой байтов (serviceHead) ([SWS_DM_01165]). Обе перегрузки представляют собой точку входа, с помощью которой инициируется создание нового списка доступа на сервере ([SWS_DM_01218]).
Обработка ошибок и параллелизм
Интерфейс объявлен как noexcept и специфицирован как безопасный относительно исключений (exception safe) ([SWS_DM_01164]). Он не генерирует исключений и не возвращает кодов ошибок; ошибочные идентификаторы сервисов, следовательно, скорее всего, будут обнаружены только при последующей оценке шаблона сервером Diagnostic Server. Вопрос Q-eacef79ec6be9fcd (открытый) В отношении конкурентности функция явно классифицирована как непотокобезопасная (not thread-safe) ([SWS_DM_01164]). При параллельном доступе из нескольких контекстов выполнения вызывающее приложение должно обеспечить внешнюю синхронизацию.
Это указание по использованию было сгенерировано ИИ на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
This function is used by the AA to construct a pattern for the DynamicAccessList, using a string of bytes.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 7426838ef9dfПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод MakeServiceBuilder класса ara::diag::DiagnosticServiceDynamicAccessList служит приложению Adaptive Application для создания диагностического шаблона для DynamicAccessList на основе последовательности байтов ([SWS_DM_01165]).
Функция объявлена как noexcept и является безопасной относительно исключений (exception safe), то есть не генерирует исключений C++ ([SWS_DM_01165]). Коды ошибок или сообщения DET/DEM для этого вызова не специфицированы. Поскольку операция классифицирована как непотокобезопасная (not thread-safe), параллельные вызовы для одного и того же экземпляра должны синхронизироваться со стороны приложения ([SWS_DM_01165]).
Это указание по использованию было сформировано ИИ на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
Preallocates memory for all service heads to fit into the DynamicAccessList. The preallocation can be just estimated and may calculate just the worst case of memory needed, not exact memory size needed for data numberOfServiceHeads.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 77bde14da8eeПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод ara::diag::DiagnosticServiceDynamicAccessList::Reserve предварительно выделяет память для заголовков сервисов внутри экземпляра DiagnosticServiceDynamicAccessList ([SWS_DM_01163], SWS Diagnostics §8.13.1.1.3.3 «Reserve»). Это предварительное выделение не обязательно должно соответствовать точному объему памяти, а может рассчитываться как оценка максимально необходимой памяти по наихудшему сценарию ([SWS_DM_01163]).
Использование и параметры
Вызов выполняется синхронно и обрабатывает два входных параметра ([SWS_DM_01163]):
numberOfServiceHeads (std::size_t): количество шаблонов диагностических сервисов (Patterns).
maxServiceHeadSize (std::size_t): ожидаемое максимальное количество байтов диагностики внутри одного шаблона.
Функция не возвращает значения (void) и специфицирована с noexcept, а также со свойством exception safe ([SWS_DM_01163]). Обработка ошибок через коды возврата или исключения отсутствует.
Параллелизм и ограничения
Функция классифицирована как not thread-safe ([SWS_DM_01163]). Конкурентные обращения нескольких потоков к одному и тому же экземпляру поэтому строго требуют внешней синхронизации. Предположительно, метод вызывается перед регистрацией шаблонов сервисов (Service-Patterns), чтобы минимизировать последующие повторные выделения памяти во время выполнения. Вопрос Q-e58b6f12a3a0adac (открытый)
демаркация
Следует отличать этот метод от одноименных функций SOVD, например в DiagnosticSovdArrayContentElementDataView ([SWS_DM_02240]), DiagnosticSovdRecordContentElementDataView ([SWS_DM_02283]) или DiagnosticSovdContentElementData ([SWS_DM_02345]), каждая из которых принимает емкость и специфицирована как thread-safe.
Это указание по использованию основано на спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал