目录
Persistency模块对比 CP 中的nvm模块,以下简称per。
1.Per架构
两种方式访问存储内存,包括键值对方式,以及文件存储方式;
在manifest中定义好,PersistencyKeyValueStorageInterface 和 PersistencyFileStorageInterface 以及部署信息 PersistencyKeyValueStorage 和 PersistencyFileStorage。
每个key-value, 通过应用设计 的 port口,定义在 PersistencyKeyValueStorageInterface,同样对于file storage 一样,对应的是PersistencyFileStorageInterface 。
2.Per初始化
初始化,调用 ara::core::Initialize ,当初始化调用了,文件同步到内存,键值准备好,所有的访问结构都准备好。
3.Per错误处理
出错时,定义的ara::per::PerErrc故障码通过 ara::core::Result 获取;
故障码创建:ara::per::MakeErrorCode.
故障码获取: ara::per::GetPerDomain
4.多进程访问
每个Per data 仅仅属于一个进程,但提供 同一个进程下 多线程的访问。
因为针对键值方式 ara::per::KeyValueStorage::GetValue 和ara::per::KeyValueStorage::SetValue 等接口是原子型操作。
但是对于file storage方式,则无法支持多线程访问,因为同步读和写无法做到。