Diese Seite wurde vollständig KI-generiert auf Basis von SWS Safe Hardware Acceleration (R25-11) — kein offizieller AUTOSAR-Text und keine automatisch extrahierte API-Seite wie die übrigen Module. Als Interpretation gekennzeichnete Aussagen sind Schlussfolgerungen aus den Quellen.
Обеспечивает типизированный контролируемый доступ на чтение и запись к областям памяти буфера.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: d5d168d169f4ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Обеспечивает типизированный контролируемый доступ на чтение и запись к областям памяти буфера.
Шаблонный класс обеспечивает типизированный и контролируемый доступ к выделенной памяти базового буфера данных. При этом инстанцирование выполняется исключительно через статические фабричные методы, которые возвращают экземпляр в виде уникального указателя ([AP_SWS_SHWA_00007]). Во время выполнения данные могут обрабатываться с помощью типобезопасных операций чтения и записи или через операторы индексации ([AP_SWS_SHWA_00011]). Все операции копирования и перемещения запрещены, в то время как к отдельным операциям с данными предъявляются специфические требования относительно потокобезопасности и обработки ошибок.
Контекст
Шаблонный класс ara::shwa::Accessor образует центральный интерфейс доступа для типизированного доступа к памяти буферов разделяемой памяти в AUTOSAR Adaptive Platform. Он инкапсулирует логику адресации и доступа к базовому ara::shwa::Buffer и статически параметризует его через тип данных (DataT), размерность (Dimensions), режим доступа (AccessModeType), целевое устройство (AccessTargetType), а также используемый распределитель памяти (AllocatorT). В расширенных сценариях класс подключает TaskHandler, который, предположительно, управляет задачами обработки в контексте буфера. Вопрос Q-552022fbf949a1f0 (открытый)
Внутри модуля класс функционирует во взаимодействии с тремя центральными партнерами по взаимодействию:
Приложение / вызывающая сторона: запрашивает экземпляры через фабричный интерфейс и выполняет операции чтения или записи через методы или операторы.
ara::shwa::Buffer: предоставляет выделенную область памяти и передается Accessor по ссылке при его создании ([AP_SWS_SHWA_00007]).
TaskHandler: регистрируется при необходимости во время создания для координации задач при обработке буфера ([AP_SWS_SHWA_00008]).
Жизненный цикл ara::shwa::Accessor подчиняется строгим семантическим ограничениям, предотвращающим неконтролируемое дублирование или перемещение экземпляров доступа. Конструктор по умолчанию явно удален ([AP_SWS_SHWA_00002]). Точно так же как конструктор копирования ([AP_SWS_SHWA_00003]), так и конструктор перемещения ([AP_SWS_SHWA_00005]), а также все операторы присваивания с копированием и перемещением объявлены удаленными ([AP_SWS_SHWA_00004], [AP_SWS_SHWA_00006]). Таким образом, прямое инстанцирование на стеке или семантика значений исключены.
Создание новых экземпляров осуществляется исключительно через статический фабричный метод Create ([AP_SWS_SHWA_00007], [AP_SWS_SHWA_00008]). Он возвращает ara::core::Result<std::unique_ptr<Accessor>>, благодаря чему владение монопольно передается вызывающей стороне. Объект автоматически уничтожается, как только владеющий std::unique_ptr покидает свою область видимости. Методы создания специфицированы как потокобезопасные (thread-safe) и безопасные относительно исключений (exception safe) ([AP_SWS_SHWA_00007], [AP_SWS_SHWA_00008]).
Штатная последовательность использования подразделяется на создание объекта, опциональную проверку свойств и последующие операции чтения или записи в буфер:
Инстанцирование через фабрику: приложение вызывает Accessor::Create и передает ссылку на ara::shwa::Buffer, а также опционально свойства конфигурации и TaskHandler ([AP_SWS_SHWA_00007], [AP_SWS_SHWA_00008]). После проверки ara::core::Result приложение принимает std::unique_ptr<Accessor>.
Оценка свойств: с помощью шаблонного метода HasProperty<PropertyT>() можно запросить наличие определенного признака ([AP_SWS_SHWA_00015]). Имеющиеся признаки затем считываются с помощью GetProperty<PropertyT>() ([AP_SWS_SHWA_00016]).
Выполнение доступа к данным: для непосредственного обмена данными доступны два пути интерфейса:
Доступ на основе методов: операции записи выполняются через Set(index, value) ([AP_SWS_SHWA_00011]), операции чтения — через Get(index) ([AP_SWS_SHWA_00012]), в каждом случае с адресацией через размерный идентификатор (Id<Dimensions>).
Доступ на основе операторов: оператор индексации operator[] позволяет выполнять прямую адресацию через Id<Dimensions> ([AP_SWS_SHWA_00009]) или линейное смещение типа std::size_t ([AP_SWS_SHWA_00010]). Тип возвращаемого значения ReferenceT при доступе на чтение разрешается в const DataT&, а при доступе на запись — в DataT& ([AP_SWS_SHWA_00014]).
Некорректные операции отображаются через ara::core::Result с помощью кодов ошибок из ShwaErrorCode:
ShwaErrorCode::kAccessorFailure: возникает во время Create, если условия конструирования или параметры являются недействительными ([AP_SWS_SHWA_00007], [AP_SWS_SHWA_00008]).
ShwaErrorCode::kInvalidIndex: возвращается при Get ([AP_SWS_SHWA_00012]) и Set ([AP_SWS_SHWA_00011]), если отсутствует допустимое начальное значение или индекс выходит за границы диапазона.
ShwaErrorCode::kInvalidAccessMode: возникает при Set, если комбинация режимов доступа недействительна ([AP_SWS_SHWA_00011]); предположительно, это происходит при попытке вызова записи для класса, инстанцированного для AccessMode::kRead. Вопрос Q-170e82f3dec16e75 (открытый)
ShwaErrorCode::kResourceBusy: указывает при Get ([AP_SWS_SHWA_00012]) и Set ([AP_SWS_SHWA_00011]) на то, что ресурс в данный момент занят. Для этой ошибки гарантируется семантика отката (rollback), благодаря чему сохраняется предыдущее состояние.
ShwaErrorCode::kFeatureNotSupported: возвращается, если свойство, запрошенное через GetProperty, не поддерживается ([AP_SWS_SHWA_00016]).
ara::core::Result< DataT > Get (Id< Dimensions > index);
Liest die durch die Signatur bezeichnete Information oder Eigenschaft aus dem Objekt.
Scope
class ara::shwa::Accessor
Thread Safety
thread-safe rollback_semantics ShwaErrorCode::kInvalid Index The operation could not be performed because no initial value is available rollback_semantics
Exception Safety
not exception safe
Errors
ShwaErrorCode::k ResourceBusy The operation could not be performed because the resource is currently busy.
Request a governed re-review of this record. The record is not changed immediately.
ara::core::Result< void > Set (Id< Dimensions > index, DataT value);
Schreibt den übergebenen Wert an die durch die Signatur bestimmte Stelle.
Scope
class ara::shwa::Accessor
Thread Safety
thread-safe
Exception Safety
not exception safe
Errors
ShwaErrorCode::kInvalid Index no_rollback_semantics The operation could not be performed because no initial value is available no_rollback_semantics ShwaErrorCode::kInvalid AccessMode Opening a file failed because the requested combination of Open Modes is invalid no_rollback_semantics ShwaErrorCode::k IntegrityCorrupted The structural integrity of the memory allocated by Buffer could not be established rollback_semantics ShwaErrorCode::k ResourceBusy The operation could not be performed because the resource is currently busy.
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал