FileAccessor contains a common basis for ReadAccessor and WriteAccessor. It provides methods for checking and setting the current position in the file (GetPosition, Set Position, MovePosition, IsEof) and for checking the current size of the file (GetSize).
Служит общим базовым классом для запроса размера файла и навигации по позициям при специализированном доступе к файлам.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e1768b56d42cПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Служит общим базовым классом для запроса размера файла и навигации по позициям при специализированном доступе к файлам.
Класс ara::per::FileAccessor служит в модуле персистентности AUTOSAR общим базовым классом для навигации по позициям и проверки размера при упорядоченном файловом доступе ([SWS_PER_00424]). Он предотвращает прямое инстанцирование и операции копирования с помощью удаленных конструкторов ([SWS_PER_00589]). При недопустимых значениях позиции срабатывает семантика отката (rollback), защищающая текущую позицию указателя. Все операции являются безопасными по отношению к исключениям, однако при параллельном использовании требуют внешней синхронизации.
Контекст
Класс ara::per::FileAccessor служит в модуле персистентности (ara::per) AUTOSAR Adaptive Platform общим абстрактным базовым классом для объектов файлового доступа, таких как ReadAccessor и WriteAccessor. Его основная задача — предоставление единого интерфейса для управления файловой позицией и проверки размера. Класс выполняет роль контролирующего элемента для курсора чтения и записи внутри открытого файла, однако сам не содержит методов для непосредственной передачи данных (таких как чтение или запись байтов). Навигация выполняется либо абсолютно от начала файла, либо относительно заданных опорных точек.
Жизненный цикл
Класс ara::per::FileAccessor не может быть напрямую инстанцирован или произвольно скопирован. Конструктор по умолчанию удален ([SWS_PER_00589]), так же как конструктор копирования ([SWS_PER_00592]) и оператор присваивания с копированием ([SWS_PER_00593]). Семантика перемещения также явно запрещена: удалены как конструктор перемещения ([SWS_PER_00590]), так и оператор присваивания с перемещением ([SWS_PER_00591]). Из этого следует интерпретация, что экземпляры создаются и управляются исключительно в контексте конкретных подклассов.
Безопасное освобождение обеспечивает виртуальный деструктор ~FileAccessor() ([SWS_PER_00594]), который делает возможным полиморфное уничтожение через указатель на базовый класс. В отношении параллелизма все функции-члены специфицированы как непотокобезопасные ([SWS_PER_00162], [SWS_PER_00424], [SWS_PER_00107], [SWS_PER_00163], [SWS_PER_00164]). Следовательно, конкурентный доступ разных потоков к одному и тому же экземпляру должен синхронизироваться приложением.
Путь использования
Типичное использование FileAccessor включает запрос размера файла, определение текущей позиции, а также целенаправленные смещения позиции для подготовки операций чтения или записи:
Запрос размера: с помощью GetSize() определяется текущий размер файла в байтах ([SWS_PER_00424]).
Запрос позиции: с помощью GetPosition() приложение запрашивает текущее смещение в байтах от начала файла, которое также может находиться ровно в конце файла ([SWS_PER_00162]).
Абсолютное позиционирование:SetPosition() устанавливает курсор на абсолютное смещение от начала файла ([SWS_PER_00163]).
Относительное смещение:MovePosition() смещает курсор относительно Origin::kBeginning, Origin::kCurrent или Origin::kEnd на знаковое смещение ([SWS_PER_00164]).
Проверка конца файла: метод IsEof() указывает, достигла ли текущая позиция конца файла ([SWS_PER_00107]).
Все операции FileAccessor объявлены безопасными относительно исключений (noexcept). Потенциальные состояния ошибок при вызовах навигации возвращаются через ara::core::Result:
Если приложение пытается через SetPosition() перейти к позиции за пределами конца файла, вызов завершается неудачно с кодом ошибки PerErrc::kInvalidPosition ([SWS_PER_00163]). То же самое относится к MovePosition(), если вычисленная целевая позиция оказывается отрицательной или находится за концом файла ([SWS_PER_00164]). Для обоих методов строго предписана семантика отката: при возникновении ошибки ранее действовавшая позиция файла сохраняется без изменений ([SWS_PER_00163], [SWS_PER_00164]).
Методы запроса GetSize() ([SWS_PER_00424]), GetPosition() ([SWS_PER_00162]) и IsEof() ([SWS_PER_00107]) непосредственно возвращают базовые типы данных и не генерируют специфических кодов ошибок.
Этот текст составлен ИИ на основе спецификации AUTOSAR R25-11. Он дополняет нормативную документацию общей картиной абстракции навигации.
Moves the current position in the file relative to the Origin. In case of an error, the current position is not changed.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 436bd0736ae4Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Синхронный метод MovePosition класса ara::per::FileAccessor смещает текущую позицию в файле относительно определенной точки отсчета [SWS_PER_00164]. Функция объявлена как noexcept[SWS_PER_00164]. В качестве параметров она принимает исходную точку origin типа Origin, а также знаковое байтовое смещение offset[SWS_PER_00164]. При успешном выполнении метод возвращает ara::core::Result с результирующей абсолютной байтовой позицией от начала файла [SWS_PER_00164].
Взаимодействие и значения параметров
Опорная точка origin определяется перечислением Origin[SWS_PER_00146]:
Origin::kBeginning: смещение от начала файла; offset при этом может быть положительным [SWS_PER_00164], [SWS_PER_00146].
Origin::kCurrent: смещение от текущей позиции в файле; offset может быть положительным или отрицательным, при этом нулевое значение не меняет позицию [SWS_PER_00164], [SWS_PER_00146].
Origin::kEnd: смещение относительно конца файла; offset может быть отрицательным, в то время как нулевое смещение устанавливает позицию ровно на конец файла [SWS_PER_00164], [SWS_PER_00146].
Обработка ошибок
В случае ошибки прежняя позиция в файле не изменяется благодаря семантике отката [SWS_PER_00164]. Если вычисленная целевая точка дает значение меньше нуля или находится за пределами конца файла, возвращается код ошибки PerErrc::kInvalidPosition[SWS_PER_00164]. Кроме того, результат может содержать ошибки, специфичные для поставщика [SWS_PER_00164].
Параллелизм и ограничения
Метод специфицирован как exception safe[SWS_PER_00164]. Поскольку реализация классифицирована как not thread-safe, параллельный доступ к одному и тому же экземпляру FileAccessor должен синхронизироваться на стороне вызывающего объекта [SWS_PER_00164].
Этот текст был создан системой ИИ и курирован autodocs.
Руководство разработчика реализации в подготовке (сложность I1)
Offset in bytes relative to ’origin’. Can be positive in case of k Beginning and kCurrent and negative in case of kCurrent and k End. In case of kCurrent, an offset of zero will not change the current position. In case of kEnd, an offset of zero will set the position to the end of the file.
A Result containing the new position in bytes from the beginning of the file. In case of an error, it contains any of the errors defined below, or a vendor specific error.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал