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.
Serve para a escrita com memória intermédia de ficheiros binários e de texto, bem como para a sua sincronização com o armazenamento físico.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: fd57dd10b948ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Serve para a escrita com memória intermédia de ficheiros binários e de texto, bem como para a sua sincronização com o armazenamento físico.
A classe ara::per::WriteAccessor permite a escrita de conteúdos de ficheiros binários ou textuais no módulo de persistência e disponibiliza métodos para acessos de escrita não formatados, bem como um operador de fluxo formatado [SWS_PER_00423]. Dado que as operações de escrita podem ser inicialmente colocadas em memória intermédia no sistema operativo, a chamada de SyncToFile() força a escrita permanente (flush) no armazenamento físico [SWS_PER_00122]. Todos os métodos são seguros contra exceções, mas não seguros para threads, razão pela qual os acessos concorrentes devem ser protegidos pela aplicação.
Contexto
ara::per::WriteAccessor é uma classe final do módulo de persistência (per) da AUTOSAR Adaptive Platform e deriva virtualmente de FileAccessor. A classe disponibiliza operações de escrita para conteúdos de ficheiros. Oferece métodos para escrita não formatada e controlada com tratamento de erros através de ara::core::Result, bem como um operador de fluxo sobrecarregado para escrita formatada. Como parceiros de interação atuam a aplicação chamadora, a memória intermédia interna de ficheiros do sistema operativo e o suporte de armazenamento físico.
Ciclo de vida
O construtor padrão de WriteAccessor está explicitamente eliminado e não pode ser utilizado [SWS_PER_00596]. (Interpretação: as instâncias de WriteAccessor deverão ser criadas e disponibilizadas através de métodos de fábrica de entidades de gestão de persistência de nível superior, como o armazenamento de ficheiros.) Pergunta Q-af92be8494274611 (aberta)
A destruição ocorre através do destruidor virtual ~WriteAccessor()[SWS_PER_00597]. A classe e os seus métodos estão especificados como seguros contra exceções (“exception safe”) e declarados como noexcept. No que diz respeito à concorrência, WriteAccessor não é seguro para threads (“not thread-safe”) [SWS_PER_00597]; os acessos paralelos à mesma instância têm de ser protegidos externamente pela aplicação.
Caminho de utilização
O fluxo regular inclui a escrita de dados em modo não formatado ou formatado, o ajuste opcional do tamanho do ficheiro e o armazenamento persistente final:
Escrever dados binários: através de WriteBinary(), um intervalo de bytes (ara::core::Span<const ara::core::Byte>) é escrito no ficheiro [SWS_PER_00423].
Escrever dados de texto: através de WriteText(), as cadeias de carateres são passadas através de um ara::core::StringView[SWS_PER_00166]. Complementarmente, operator<< está disponível como função de conveniência para casos de utilização não críticos, sendo os erros ocorridos ignorados silenciosamente [SWS_PER_00125].
Forçar persistência: o momento do armazenamento físico depende da implementação da persistência; SyncToFile() descarrega (flashes) a memória intermédia do sistema operativo de forma vinculativa para o suporte de armazenamento [SWS_PER_00122], [SWS_PER_00423], [SWS_PER_00166].
Ajustar tamanho do ficheiro: com SetFileSize(), o ficheiro pode ser truncado, sendo os conteúdos excedentes removidos; a posição no ficheiro permanece inalterada ou é definida para a última posição válida ou 0 [SWS_PER_00428].
Os métodos WriteBinary(), WriteText(), SyncToFile() e SetFileSize() retornam um ara::core::Result<void> que, em caso de falha, contém códigos de erro específicos:
PerErrc::kPhysicalStorageFailure: o acesso ao suporte de armazenamento físico falha [SWS_PER_00423], [SWS_PER_00166], [SWS_PER_00122], [SWS_PER_00428]. O estado do ficheiro é desconhecido e pode estar completamente corrompido (sem semântica de reversão).
PerErrc::kOutOfStorageSpace: espaço de armazenamento físico insuficiente [SWS_PER_00423], [SWS_PER_00166], [SWS_PER_00122]. Durante a escrita, a parte excedente é descartada e a posição fica no final do ficheiro (sem semântica de reversão).
PerErrc::kEncryptionFailed: a cifragem ou decifragem falha [SWS_PER_00423], [SWS_PER_00166], [SWS_PER_00122], [SWS_PER_00428]. A memória intermédia e a posição são atualizadas, mas o ficheiro não pode ser persistido e reflete uma versão mais antiga no armazenamento (semântica de reversão).
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.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: c625990570f3ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função-membro SyncToFile da classe ara::per::WriteAccessor (definida em #include "ara/per/write_accessor.h") transfere o conteúdo atual do ficheiro sincronamente para o armazenamento físico [SWS_PER_00122]. A chamada não recebe parâmetros de entrada e devolve um ara::core::Result<void> que, em caso de sucesso, está vazio ou, em caso de erro, contém códigos de erro específicos do módulo Persistency ou erros específicos do fabricante [SWS_PER_00122].
Durante a execução podem ocorrer diferentes casos de erro, alguns dos quais possuem semântica de rollback [SWS_PER_00122]:
StorageFailure: ocorre quando o acesso físico ao meio de armazenamento falha (sem semântica de rollback) [SWS_PER_00122].
PerErrc::kOutOfStorageSpace: é devolvido caso o espaço de armazenamento físico seja insuficiente para o ficheiro modificado (sem semântica de rollback) [SWS_PER_00122].
PerErrc::kQuotaExceeded: é reportado quando o ficheiro excede o tamanho máximo configurado AllowedSize do File Storage (com semântica de rollback) [SWS_PER_00122].
PerErrc::kEncryptionFailed: se a encriptação dos dados armazenados falhar (com semântica de rollback) [SWS_PER_00122].
PerErrc::kAuthenticationFailed: se o cálculo do MAC para os dados falhar (com semântica de rollback) [SWS_PER_00122].
No que diz respeito à segurança de execução, o método está declarado como noexcept e especificado como exception safe[SWS_PER_00122]. No entanto, como está expressamente classificado como not thread-safe, chamadas simultâneas na mesma instância de WriteAccessor devem provavelmente ser sincronizadas pelo chamador [SWS_PER_00122]. Pergunta Q-e4b139f136cdcd31 (aberta)
Esta nota de uso foi gerada automaticamente com base na especificação 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.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 65db1acb87c9Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função WriteBinary da classe ara::per::WriteAccessor escreve o conteúdo de uma sequência de bytes (ara::core::Span<const ara::core::Byte>) num ficheiro [SWS_PER_00423]. O momento da persistência efetiva no meio de armazenamento depende da implementação do Persistency; através de SyncToFile pode forçar-se a persistência síncrona [SWS_PER_00423]. A função está declarada como noexcept e é considerada segura contra exceções [SWS_PER_00423].
No que diz respeito à concorrência, WriteBinary está especificado como não seguro para threads (not thread-safe) [SWS_PER_00423]. Acessos paralelos ao mesmo acessor têm de ser sincronizados ao nível da aplicação.
Em caso de erro, é devolvido um código de erro em ara::core::Result<void>, podendo o conteúdo do ficheiro ficar danificado e a posição atual ter-se alterado [SWS_PER_00423]:
PerErrc::kPhysicalStorageFailure: o estado do ficheiro é desconhecido e este pode estar completamente destruído (sem semântica de rollback) [SWS_PER_00423].
PerErrc::kOutOfStorageSpace: espaço físico insuficiente; os dados que excedam a quota são descartados e a posição do ficheiro fica no fim [SWS_PER_00423].
PerErrc::kQuotaExceeded: a operação de escrita excederia o tamanho máximo configurado AllowedSize[SWS_PER_00423].
PerErrc::kEncryptionFailed: a encriptação falha; o conteúdo e a posição do ficheiro são atualizados, mas não persistidos (o ficheiro persistido mantém a versão anterior) [SWS_PER_00423].
PerErrc::kAuthenticationFailed ou PerErrc::kValidationFailed: o cálculo/verificação do MAC falha ou a validade dos dados armazenados não é garantida [SWS_PER_00423].
Esta nota de utilização foi gerada de forma automatizada com base no elemento de especificação [SWS_PER_00423].
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.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: f24ce7c436f3ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
O método síncrono WriteText da interface ara::per::WriteAccessor escreve o conteúdo de uma ara::core::StringView no ficheiro aberto [SWS_PER_00166]. A função está especificada como segura contra exceções (exception safe) e não declara o lançamento de exceções C++ (noexcept) [SWS_PER_00166]. O momento exato do armazenamento físico depende da implementação do Persistency; uma gravação imediata no meio de armazenamento pode ser forçada através de SyncToFile[SWS_PER_00166].
Tratamento de erros
Como valor de retorno serve um ara::core::Result<void>, que em caso de erro reporta códigos de erro de PerErrc ou erros específicos do fabricante [SWS_PER_00166]. Se a operação falhar, o conteúdo do ficheiro pode ficar corrompido e a posição de escrita pode ter sido alterada [SWS_PER_00166]:
PerErrc::kPhysicalStorageFailure: falha no acesso ao armazenamento físico; o estado do ficheiro é desconhecido ou o ficheiro está destruído [SWS_PER_00166].
PerErrc::kEncryptionFailed: a encriptação falha; o conteúdo do ficheiro e a posição na memória são atualizados, mas não podem ser persistidos, permanecendo uma versão persistida mais antiga [SWS_PER_00166].
PerErrc::kOutOfStorageSpace: espaço de armazenamento físico insuficiente; os dados além da quota são descartados e a posição fica no fim do ficheiro [SWS_PER_00166].
PerErrc::kQuotaExceeded, PerErrc::kValidationFailed e PerErrc::kAuthenticationFailed: reportam excessos de quota (AllowedSize), bem como erros de validação ou de autenticação, mantendo a semântica de rollback [SWS_PER_00166].
Simultaneidade e restrições
A operação está classificada como não segura para threads (not thread-safe) [SWS_PER_00166]. Em caso de acessos paralelos à mesma instância de WriteAccessor, os chamadores terão provavelmente de sincronizar as chamadas de forma autónoma. Pergunta Q-73a6dbdb7d3df643 (aberta)
Esta nota de uso baseia-se na especificação AUTOSAR Adaptive Platform R25-11.
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 · Original em alemão