Предоставляет буфер для передачи небольших пользовательских данных приложения для синхронизированных базисов времени.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 44e6e39606c3ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Предоставляет буфер для передачи небольших пользовательских данных приложения для синхронизированных базисов времени.
Структура ara::tsync::UserData служит для передачи компактных пользовательских данных приложения в рамках синхронизированных базисов времени. Она управляет статическим буфером с неизменяемой верхней границей в три байта, которая определена через kMaxUserDataSize[SWS_TS_14231]. Приложения записывают полезные данные в массив и обозначают количество фактически действительных байтов через поле size[SWS_TS_14232]. В качестве ключевого граничного условия логика применяемой программы должна гарантировать, что size никогда не превышает установленную максимальную емкость, и исключать обращения к неинициализированным областям буфера.
Контекст
Структура данных ara::tsync::UserData служит внутри функционального кластера синхронизации времени (tsync) AUTOSAR Adaptive Platform для инкапсуляции пользовательских данных приложения в рамках синхронизированных базисов времени. Структура объявлена в заголовочном файле ara/tsync/synchronized_time_base_status.h. Ее основная задача заключается в предоставлении компактной, статически образмеренной области памяти для прикладных дополнительных данных, которые передаются или анализируются вместе с информацией о времени. Максимальный объем этих полезных данных зафиксирован статической константой kMaxUserDataSize ровно в три байта [SWS_TS_14231]. Для буферизации непосредственных байтов полезных данных используется массив data типа ara::core::Array<ara::core::Byte, kMaxUserDataSize>[SWS_TS_14233]. Этот буфер дополняется полем size, указывающим количество фактически действительных байтов полезных данных в буфере [SWS_TS_14232]. Интерпретация: исходя из места определения в заголовке ara/tsync/synchronized_time_base_status.h, UserData, вероятно, служит главным образом полем статуса для передачи небольшой связанной с приложением дополнительной информации, такой как контрольные флаги или счетчики. Вопрос Q-a0fb20686141f042 (открытый) В качестве партнеров по взаимодействию обычно выступают службы задания времени и принимающие приложения, которые опрашивают или передают статус синхронизированного базиса времени.
Жизненный цикл
Будучи обычной структурой C++ (Value Object), UserData не имеет сложного внутреннего жизненного цикла и полностью обходится без динамических выделений памяти. Экземпляры обычно создаются в стеке или как встроенный элемент данных вышестоящих структур статуса. Инициализация выполняется напрямую через инициализацию членов или стандартное присваивание C++. С точки зрения отношений владения структура подчиняется семантике значений: создающие компоненты полностью владеют своим локальным экземпляром и передают его по копии или по ссылке в интерфейсы. Поскольку UserData не реализует внутренних механизмов синхронизации или блокировок мьютексами, параллельный доступ на чтение и запись из нескольких потоков к одному и тому же экземпляру не является потокобезопасным. Приложения должны защищать одновременный доступ внешними мерами синхронизации, в то время как независимые друг от друга экземпляры могут безопасно использоваться в параллельных контекстах. Уничтожение не требует явной очистки ресурсов, поскольку содержащееся поле данных data[SWS_TS_14233] зарезервировано статически.
Путь использования
Типичный путь использования включает заполнение, передачу и анализ буфера данных. Сначала отправляющий или предоставляющий статус компонент создает экземпляр UserData. Затем полезные данные копируются в массив data, причем может быть занято не более kMaxUserDataSize байт [SWS_TS_14231], [SWS_TS_14233]. Сразу после этого компонент устанавливает поле size в фактическое количество записанных байтов [SWS_TS_14232]. На стороне получателя обрабатывающее приложение сначала проверяет значение size[SWS_TS_14232]. Если size больше нуля, приложение считывает именно этот действительный префикс из буфера data[SWS_TS_14233]. Значения за пределами этой области, то есть начиная с индекса size по kMaxUserDataSize - 1, игнорируются, так как они могут содержать неопределенные или устаревшие остаточные данные.
Сценарии ошибок
Ошибочные ситуации у UserData возникают в первую очередь из-за несоответствий между указанием размера и емкостью буфера. Если поле size принимает значение, превышающее определенный максимальный размер kMaxUserDataSize в три байта [SWS_TS_14231], имеет место нарушение границ спецификации. В таком случае при итеративном считывании data[SWS_TS_14233] существует угроза переполнения буфера или обращений за пределы определенных границ массива. Другой риск заключается в ошибочном считывании data, если size равно нулю [SWS_TS_14232], так как в этом состоянии нет действительных полезных данных. Коды ошибок или исключения самой структурой не генерируются; таким образом, валидация предусловий — в частности size <= kMaxUserDataSize — целиком лежит на логике применяемой программы.
Настоящее руководство основано на спецификации AUTOSAR Adaptive R25-11. Все сведения опираются на указанные требования SWS.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал