class WriteAccessor final : public virtual FileAccessor {...};
WriteAccessor is used to write file data. It provides the WriteBinary and WriteText methods featuring a Result for controlled, unformatted writing, and the operator<< method for simple formatted writing. It also provides SyncToFile() to flush the buffer of the operating system to the physical storage.
Служит для буферизованной записи бинарных и текстовых файлов, а также их синхронизации с физическим накопителем.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: fd57dd10b948ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Служит для буферизованной записи бинарных и текстовых файлов, а также их синхронизации с физическим накопителем.
Класс ara::per::WriteAccessor обеспечивает запись бинарного или текстового содержимого файлов в модуле персистентности и предоставляет методы для неформатированного доступа на запись, а также форматированный оператор потока [SWS_PER_00423]. Поскольку операции записи сначала могут буферизоваться в операционной системе, вызов SyncToFile() принудительно выполняет окончательный сброс данных на физический накопитель [SWS_PER_00122]. Все методы являются безопасными к исключениям, однако не являются потокобезопасными, в связи с чем параллельный доступ должен защищаться приложением.
Контекст
ara::per::WriteAccessor является финальным классом модуля персистентности (per) платформы AUTOSAR Adaptive Platform и виртуально наследуется от FileAccessor. Класс предоставляет операции записи для содержимого файлов. Он предлагает методы для неформатированной контролируемой записи с обработкой ошибок через ara::core::Result, а также перегруженный оператор потока для форматированной записи. В качестве партнеров по взаимодействию выступают вызывающее приложение, внутренний файловый буфер операционной системы и физический носитель данных.
Жизненный цикл
Конструктор по умолчанию WriteAccessor явно удален и не должен использоваться [SWS_PER_00596]. (Интерпретация: экземпляры WriteAccessor, вероятно, создаются и предоставляются фабричными методами вышестоящих сущностей управления персистентностью, таких как File-Storage.) Вопрос Q-af92be8494274611 (открытый)
Уничтожение выполняется через виртуальный деструктор ~WriteAccessor()[SWS_PER_00597]. Класс и его методы специфицированы как безопасные к исключениям («exception safe») и объявлены как noexcept. В отношении многопоточности WriteAccessor не является потокобезопасным («not thread-safe») [SWS_PER_00597]; параллельный доступ к одному и тому же экземпляру должен защищаться приложением извне.
Путь использования
Стандартная процедура включает запись данных в неформатированном или форматированном режиме, опциональную корректировку размера файла и заключительное персистентное сохранение:
Запись бинарных данных: с помощью WriteBinary() диапазон байтов (ara::core::Span<const ara::core::Byte>) записывается в файл [SWS_PER_00423].
Запись текстовых данных: с помощью WriteText() строки передаются через ara::core::StringView[SWS_PER_00166]. Дополнительно доступен operator<< как удобная функция для некритичных сценариев использования, при этом возникающие ошибки негласно игнорируются [SWS_PER_00125].
Принудительное сохранение: момент фактической физической записи зависит от реализации персистентности; SyncToFile() гарантированно сбрасывает буфер операционной системы на носитель данных [SWS_PER_00122], [SWS_PER_00423], [SWS_PER_00166].
Изменение размера файла: с помощью SetFileSize() файл может быть усечен, в результате чего выступающее содержимое удаляется; позиция в файле остается без изменений либо устанавливается на последнюю допустимую позицию или 0 [SWS_PER_00428].
PerErrc::kOutOfStorageSpace: недостаточно физического дискового пространства [SWS_PER_00423], [SWS_PER_00166], [SWS_PER_00122]. При записи превышающая часть отбрасывается, а позиция устанавливается в конец файла (семантика отката отсутствует).
PerErrc::kEncryptionFailed: сбой шифрования или расшифрования [SWS_PER_00423], [SWS_PER_00166], [SWS_PER_00122], [SWS_PER_00428]. Хотя буфер и позиция обновляются, файл не может быть сохранен и отражает на накопителе более старую версию (семантика отката).
Reduces the size of the file to ’size’, effectively removing the current content of the file beyond this size. The current file position is unchanged if it is lower than ’size’, or set to the last valid position in the file otherwise. If ’size’ is 0, the current file position will also be set to 0.
Writes the content of a Span of Byte to the file. The time when the content is persisted depends on the implementation of Persistency. SyncTo File can be used to force Persistency to persist the file content. In case of an error, the file content might be corrupted, and the current position might or might not have changed. The expected state of the file for each supported error can be expected to be as follows: • kPhysicalStorageFailure: The state of the file is unknown. It could have been entirely destroyed. • kEncryptionFailed: The content of the file and the current position will have been updated, but could not be persisted. The persisted file will reflect an older version of the file. • kOutOfStorageSpace: The content of the file will have been updated, but the part of the operation that exceeded the quota will have been discarded. The current position will be at the end of the file.
Writes the content of a StringView to the file. The time when the content is persisted depends on the implementation of Persistency. SyncTo File can be used to force Persistency to persist the file content. In case of an error, the file content might be corrupted, and the current position might or might not have changed. The expected state of the file for each supported error can be expected to be as follows: • kPhysicalStorageFailure: The state of the file is unknown. It could have been entirely destroyed. • kEncryptionFailed: The content of the file and the current position will have been updated, but could not be persisted. The persisted file will reflect an older version of the file. • kOutOfStorageSpace: The content of the file will have been updated, but the part of the operation that exceeded the quota will have been discarded. The current position will be at the end of the file.
Writes the content of a StringView to the file. This operator is just a comfort feature for non-safety critical Persistency users. If an error occurs during this operation, it is silently ignored.
Reduces the size of the file to ’size’, effectively removing the current content of the file beyond this size. The current file position is unchanged if it is lower than ’size’, or set to the last valid position in the file otherwise. If ’size’ is 0, the current file position will also be set to 0.
Flushes the current file content to the physical storage.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: c625990570f3ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член SyncToFile класса ara::per::WriteAccessor (определенная в #include "ara/per/write_accessor.h") синхронно переносит текущее содержимое файла в физическое хранилище [SWS_PER_00122]. Вызов не принимает входных параметров и возвращает ara::core::Result<void>, которое в случае успеха пусто или в случае ошибки содержит специфические коды ошибок модуля Persistency либо ошибки, специфичные для поставщика [SWS_PER_00122].
При выполнении могут возникать различные случаи ошибок, часть из которых обладает семантикой отката [SWS_PER_00122]:
StorageFailure: возникает, если сбой физического доступа к носителю данных (без семантики отката) [SWS_PER_00122].
PerErrc::kOutOfStorageSpace: возвращается, если физического объема хранилища для измененного файла недостаточно (без семантики отката) [SWS_PER_00122].
PerErrc::kQuotaExceeded: сообщается, если файл превышает сконфигурированный максимальный размер AllowedSize хранилища File Storage (с семантикой отката) [SWS_PER_00122].
PerErrc::kEncryptionFailed: сбой шифрования сохраненных данных (с семантикой отката) [SWS_PER_00122].
PerErrc::kAuthenticationFailed: сбой вычисления MAC для данных (с семантикой отката) [SWS_PER_00122].
С точки зрения безопасности выполнения метод объявлен как noexcept и специфицирован как exception safe[SWS_PER_00122]. Однако, поскольку он явно классифицирован как not thread-safe, одновременные вызовы для одного и того же экземпляра WriteAccessor, вероятно, должны синхронизироваться вызывающей стороной [SWS_PER_00122]. Вопрос Q-e4b139f136cdcd31 (открытый)
Это указание по использованию было автоматически сгенерировано на основе спецификации AUTOSAR R25-11.
Writes the content of a Span of Byte to the file. The time when the content is persisted depends on the implementation of Persistency. SyncTo File can be used to force Persistency to persist the file content. In case of an error, the file content might be corrupted, and the current position might or might not have changed. The expected state of the file for each supported error can be expected to be as follows: • kPhysicalStorageFailure: The state of the file is unknown. It could have been entirely destroyed. • kEncryptionFailed: The content of the file and the current position will have been updated, but could not be persisted. The persisted file will reflect an older version of the file. • kOutOfStorageSpace: The content of the file will have been updated, but the part of the operation that exceeded the quota will have been discarded. The current position will be at the end of the file.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 65db1acb87c9Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция WriteBinary класса ara::per::WriteAccessor записывает содержимое последовательности байтов (ara::core::Span<const ara::core::Byte>) в файл [SWS_PER_00423]. Момент фактического сохранения на носителе данных зависит от реализации Persistency; с помощью SyncToFile можно форсировать синхронное сохранение [SWS_PER_00423]. Функция объявлена как noexcept и считается безопасной относительно исключений [SWS_PER_00423].
В отношении конкурентности WriteBinary специфицирована как непотокобезопасная (not thread-safe) [SWS_PER_00423]. Параллельные обращения к одному и тому же аксессору должны синхронизироваться на уровне приложения.
В случае ошибки код ошибки возвращается в ara::core::Result<void>, при этом содержимое файла может быть повреждено, а текущая позиция может измениться [SWS_PER_00423]:
PerErrc::kPhysicalStorageFailure: состояние файла неизвестно и он может быть полностью разрушен (отсутствует семантика отката) [SWS_PER_00423].
PerErrc::kOutOfStorageSpace: недостаточно физической памяти; данные, выходящие за пределы квоты, отбрасываются, а позиция файла находится в конце [SWS_PER_00423].
PerErrc::kQuotaExceeded: операция записи превысила бы сконфигурированный максимальный размер AllowedSize[SWS_PER_00423].
PerErrc::kEncryptionFailed: сбой шифрования; содержимое файла и позиция обновляются, но не сохраняются (сохраненный файл сохраняет предыдущую версию) [SWS_PER_00423].
PerErrc::kAuthenticationFailed или PerErrc::kValidationFailed: сбой вычисления/проверки MAC либо валидность сохраненных данных не гарантируется [SWS_PER_00423].
Данное указание по использованию было сгенерировано автоматически на основе элемента спецификации [SWS_PER_00423].
Руководство разработчика реализации в подготовке (сложность I1)
Writes the content of a StringView to the file. The time when the content is persisted depends on the implementation of Persistency. SyncTo File can be used to force Persistency to persist the file content. In case of an error, the file content might be corrupted, and the current position might or might not have changed. The expected state of the file for each supported error can be expected to be as follows: • kPhysicalStorageFailure: The state of the file is unknown. It could have been entirely destroyed. • kEncryptionFailed: The content of the file and the current position will have been updated, but could not be persisted. The persisted file will reflect an older version of the file. • kOutOfStorageSpace: The content of the file will have been updated, but the part of the operation that exceeded the quota will have been discarded. The current position will be at the end of the file.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: f24ce7c436f3ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Синхронный метод WriteText интерфейса ara::per::WriteAccessor записывает содержимое ara::core::StringView в открытый файл [SWS_PER_00166]. Функция специфицирована как исключениебезопасная (exception safe) и декларирует отсутствие генерации исключений C++ (noexcept) [SWS_PER_00166]. Точный момент физического сохранения зависит от реализации Persistency; немедленное сохранение на носитель данных может быть принудительно выполнено через SyncToFile[SWS_PER_00166].
Обработка ошибок
В качестве возвращаемого значения служит ara::core::Result<void>, сообщающее в случае ошибки коды ошибок из PerErrc или ошибки, специфичные для поставщика [SWS_PER_00166]. При сбое операции содержимое файла может быть повреждено, а позиция записи изменена [SWS_PER_00166]:
PerErrc::kPhysicalStorageFailure: сбой физического доступа к памяти; состояние файла неизвестно или файл поврежден [SWS_PER_00166].
PerErrc::kEncryptionFailed: сбой шифрования; содержимое файла и позиция в памяти обновляются, но не могут быть сохранены, из-за чего сохраняется более старая сохраненная версия [SWS_PER_00166].
PerErrc::kOutOfStorageSpace: недостаточно физического пространства памяти; данные сверх квоты отбрасываются, и позиция находится в конце файла [SWS_PER_00166].
PerErrc::kQuotaExceeded, PerErrc::kValidationFailed и PerErrc::kAuthenticationFailed: сообщают о превышении квоты (AllowedSize), а также об ошибках валидации или аутентификации с сохранением семантики отката (rollback) [SWS_PER_00166].
Параллелизм и ограничения
Операция классифицирована как непотокобезопасная (not thread-safe) [SWS_PER_00166]. При параллельном доступе к одному и тому же экземпляру WriteAccessor вызывающим сторонам, по-видимому, необходимо самостоятельно синхронизировать вызовы. Вопрос Q-73a6dbdb7d3df643 (открытый)
Это указание по использованию основано на спецификации AUTOSAR Adaptive Platform R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
Writes the content of a StringView to the file. This operator is just a comfort feature for non-safety critical Persistency users. If an error occurs during this operation, it is silently ignored.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал