本文主要描述A核存储管理模块的公用接口,以便软件软件测试人员、应用开发人员使用模块进行测试或应用开发。
本文主要提供给模块的测试人员、使用模块的开发人员。
编号(No.) | SVN路径/文档名(Document Name) | 文档版本(Revision) |
1 | https://neusarsvn.in.reachauto.com/svn/SDC-EOS-aCore/02.Develop/02.SoftwareDevelopment/11.DeliveryDocument/02.NeuSAR aCore平台用户手册/01.NeuSAR aCore使用手册/PER/ NeuSAR aCore_API文档_PER.docx | 8.0 |
编号(No.) | 缩写 Term/Abbreviation | 说明 Description |
1 | PER | Persistency,持久化 |
2 | KV | Key Value,键值(存储) |
File Path | Description |
midware/per_wrapper/compress_method.h | 定义压缩解压接口。 |
midware/per_wrapper/file_storage_wrapper.h | 包含文件存储库管理的接口定义、类定义。 |
midware/per_wrapper/key_value_storage_proxy.h | 提供A核应用核内共享存储、A核应用访问M核数据的代理的接口定义、类定义。 |
midware/per_wrapper/kvs_wrapper.h | 包含键值存储的接口定义、类定义。 |
midware/per_wrapper/read_accessor_wrapper.h | 提供只读文件操作的类定义。 |
midware/per_wrapper/read_write_accessor_wrapper.h | 提供可读可写文件操作的类定义。 |
midware/per_wrapper/storage_capacity.h | 提供应用存储容量查询类定义。 |
midware/per_wrapper/strategy.h | 提供存储策略的定义。 |
midware/per_wrapper/partition_capactity_wrapper.h | 提供磁盘分区容量查询的接口定义、类定义。 |
midware/per_wrapper/per_wrapper_common_define.h | 提供一些通用结构体定义。 |
本节的类型为Key-Value键值存储的操作服务,其中定义的存储策略相关的宏也服务于File Storage。
Interface ID | SWSD-STPR-WRAPPER-API-KVS-001 |
ASIL | QM |
Name | KeyValueStorageWrapper |
Kind | class |
Description | 定义键值存储的操作类,封装并增强ara::per::KeyValueStorage的功能。 |
Symbol | midware::perwrapper::KeyValueStorageWrapper |
Scope | midware::perwrapper |
Syntax | class KeyValueStorageWrapper {…}; |
Header file | #include "midware/per_wrapper/kvs_wrapper.h" |
Note | 代码示例及类句柄的获取说明: auto result = OpenKeyValueStorageWrapper(StringView("pathname")); if(!result) { //打开键值库系统失败,错误信息为:result.Error().Message(); //相应的处理 } auto kv = std::move(result).Value(); 此kv即为此类的对象指针。 |
Interface ID | SWSD-STPR-WRAPPER-API-CRON-001 | |
ASIL | QM | |
Name | – | |
Kind | macro | |
Description | 定义文件、键值库的存储策略。 | |
Symbol | – | |
Scope | – | |
Syntax | #define S_NONE 0x00 #define S_IMMEDIATELY 0x01 #define S_CYCLE 0x02 #define S_CLOSED 0x04 | |
Values: | S_NONE = 0x00 | 不增加其它存储策略 |
S_IMMEDIATELY= 0x01 | 在有写入的操作时立即存储 | |
S_CYCLE= 0x02 | 根据设置的时间间隔周期存储 | |
S_CLOSED = 0x04 | 下电存储,会在存储对象析构时存储 | |
Header file | #include "midware/per_wrapper/strategy.h" |
本节的类型服务于核内共享、核间共享的操作。
Interface ID | SWSD-STPR-WRAPPER-API- KV.PROXY-001 |
ASIL | QM |
Name | FileStorageWrapper |
Kind | class |
Description | 定义键值存储代理(核内共享、A核访问M核数据)的操作类。 |
Symbol | midware::perwrapper::KeyValueStorageProxy |
Scope | midware::perwrapper |
Syntax | class KeyValueStorageProxy {…}; |
Header file | #include "midware/per_wrapper/key_value_storage_proxy.h" |
Note | 代码示例及类句柄的获取说明: auto result = OpenKeyValueStorageProxy(StringView("pathname")); if(!result) { //打开键值库系统失败,错误信息为:result.Error().Message(); //相应的处理 } auto proxy = std::move(result).Value(); 此proxy即为此类的对象指针。 |
本节的类型服务于文件存储操作。
Interface ID | SWSD-STPR-WRAPPER-API-FS-001 |
ASIL | QM |
Name | FileStorageWrapper |
Kind | class |
Description | 定义文件库的操作类,封装并增强ara::per::FileStorage的功能。 |
Symbol | midware::perwrapper::FileStorageWrapper |
Scope | midware::perwrapper |
Syntax | class FileStorageWrapper {…}; |
Header file | #include "midware/per_wrapper/file_storage_wrapper.h" |
Note | 代码示例及类句柄的获取说明: auto result = OpenFileStorageWrapper(StringView("pathname")); if(!result) { //打开文件系统失败,错误信息为:result.Error().Message(); //相应的处理 } auto fileStroage = std::move(result).Value(); 此fileStroage即为此类的对象指针。 |
Interface ID | SWSD-STPR-WRAPPER-API-FS-002 |
ASIL | QM |
Name | ReadAccessorWrapper |
Kind | class |
Description | 定义只读文件操作类,封装并增强ara::per::ReadAccessor的功能。 |
Symbol | midware::perwrapper::ReadAccessorWrapper |
Scope | midware::perwrapper |
Syntax | class ReadAccessorWrapper {…}; |
Header file | #include "midware/per_wrapper/read_accessor_wrapper.h" |
Note | 代码示例及类句柄的获取说明: 见class FileStorageWrapper相应的示例获取的fileStroage句柄。 auto accessor = fileStroage->OpenFileReadOnly(StringView("filename")); if(!accessor) { //以只读方式打开文件失败,信息为:accessor.Error().Message(); //相应处理 } auto ac = std::move(accessor).Value(); ac即为此类的对象指针。 |
Interface ID | SWSD-STPR-WRAPPER-API-FS-003 |
ASIL | QM |
Name | ReadWriteAccessorWrapper |
Kind | class |
Description | 定义可读可写文件操作类,封装增强ara::per::ReadWriteAccessor的功能。 |
Symbol | midware::perwrapper::ReadAccessorWrapper |
Scope | midware::perwrapper |
Syntax | class ReadWriteAccessorWrapper : public ReadAccessorWrapper {…}; |
Header file | #include "midware/per_wrapper/read_write_accessor_wrapper.h" |
Note | 代码示例及类句柄的获取说明: 见class FileStorageWrapper相应的示例获取的fileStroage句柄。 auto accessor = fileStroage->OpenFileReadWrite(StringView("filename")); if(!accessor) { //以可读可写方式打开文件失败,信息为:accessor.Error().Message(); //相应处理 } auto ac = std::move(accessor).Value(); ac即为此类的指针。 |
本节的类型服务于设置、获取应用存储容量。
Interface ID | SWSD-STPR-WRAPPER-API-APP.CAP-001 |
ASIL | QM |
Name | StorageCapacity |
Kind | class |
Description | 定义应用存储空间查询操作类。 |
Symbol | midware::perwrapper::StorageCapacity |
Scope | midware::perwrapper |
Syntax | class StorageCapacity {…}; |
Header file | #include "midware/per_wrapper/storage_capacity.h" |
本节的类型服务于获取磁盘分区存储容量。
Interface ID | SWSD-STPR-WRAPPER-API-PART.CAP-001 |
ASIL | QM |
Name | MountPartitionInfo |
Kind | struct |
Description | 表示已挂载的分区容量信息,成员意义分别为: string name; // 分区名称 uint32_t size; // 分区总容量,单位KB uint32_t used; // 分区已使用容量,单位KB uint32_t available; // 分区剩余可用容量,单位KB string used_percent; // 分区已使用容量百分比,保留1位小数 string mount_point; // 挂载路径 |
Symbol | midware::perwrapper::MountPartitionInfo |
Scope | midware::perwrapper |
Syntax | struct MountPartitionInfo { string name; uint32_t size; uint32_t used; uint32_t available; string used_percent; string mount_point; }; |
Header file | #include "midware/per_wrapper/per_wrapper_common_define.h" |
Interface ID | SWSD-STPR-WRAPPER-API-PART.CAP-002 |
ASIL | QM |
Name | PartitionsCapacityInfo |
Kind | struct |
Description | 表示分区容量查询信息,成员意义分别为: string time_stamp; //查询时间,格式为"yyyy-MM-dd HH:mm:ss" vector<MountPartitionInfo> mounted_partitions; // 已挂载分区容量信息实体 |
Symbol | midware::perwrapper::PartitionsCapacityInfo |
Scope | midware::perwrapper |
Syntax | struct PartitionsCapacityInfo { string time_stamp; vector<MountPartitionInfo> mounted_partitions; }; |
Header file | #include "midware/per_wrapper/per_wrapper_common_define.h" |
Interface ID | SWSD-STPR-WRAPPER-API-KVS-002 | |
ASIL | QM | |
Name | OpenKeyValueStorageWrapper | |
Kind | function | |
Description | 打开键值数据库,返回键值存储类的实例。 | |
Symbol | midware::perwrapper::OpenKeyValueStorageWrapper(ara::core::StringView kvs) | |
Scope | midware::perwrapper | |
Visibility | public | |
Syntax | ara::core::Result<ara::per::SharedHandle<KeyValueStorageWrapper> > OpenKeyValueStorageWrapper(const ara::core::StringView &kvs); | |
Parameters (in) | kvs | 由PersistencyKeyValueDatabaseInterface输入的PortPrototype的短名称路径。 |
Return value | ara::core::Result<ara::per::SharedHandle <KeyValueStorageWrapper> > | 包含SharedHandle的结果,或为PerErrc中定义的错误之一,PerErrc参考文档《NeuSAR aCore_API文档_PER.docx》。 |
Exception Safety | none | |
Thread Safety | re-entrant | |
Header file | #include "midware/per_wrapper/kvs_wrapper.h" | |
Note | 示例:Port路径为 /NeuSAR/<应用名称>/<PortKey名称>,如OpenKeyValueStorageWrapper("/NeuSAR/AppPersistencyDemo/PortKey1") |
Interface ID | SWSD-STPR-WRAPPER-API-KVS-003 | |
ASIL | QM | |
Name | KeyValueStorageWrapper::KeyValueStorageWrapper | |
Kind | function | |
Description | 移动语义构造函数。 | |
Symbol | midware::perwrapper::KeyValueStorageWrapper::KeyValueStorageWrapper(KeyValueStorageWrapper &&kvs) | |
Visibility | public | |
Scope | class midware::perwrapper::KeyValueStorageWrapper | |
Syntax | KeyValueStorageWrapper(KeyValueStorageWrapper &&kvs) noexcept; | |
Parameters (inout) | kvs | 要移动的KeyValueStorageWrapper对象 |
Exception Safety | noexcept | |
Thread Safety | no | |
Header file | #include "midware/perwrapper/kvs_wrapper.h" | |
Note |
Interface ID | SWSD-STPR-WRAPPER-API-KVS-004 |
ASIL | QM |
Name | KeyValueStorageWrapper::KeyValueStorageWrapper |
Kind | function |
Symbol | midware::perwrapper::KeyValueStorageWrapper::KeyValueStorageWrapper(KeyValueStoragev &kvs) |
Visibility | delete |
Scope | class midware::perwrapper::KeyValueStorageWrapper |
Syntax | KeyValueStorageWrapper(const KeyValueStorageWrapper &)=delete; |
Header file | #include "midware/perwrapper/kvs_wrapper.h" |
Description | 拷贝构造函数,禁用。 |
Note |
Interface ID | SWSD-STPR-WRAPPER-API-KVS-005 | |
ASIL | QM | |
Name | KeyValueStorageWrapper::operator= | |
Kind | function | |
Description | 移动语义赋值运算符。 | |
Symbol | midware::perwrapper::KeyValueStorageWrapper::operator=(KeyValueStorageWrapper &&kvs) | |
Visibility | public | |
Scope | class midware::perwrapper::KeyValueStorageWrapper | |
Syntax | KeyValueStorageWrapper& operator=(KeyValueStorageWrapper &&kvs) noexcept; | |
Parameters (inout) | kvs | 要移动的KeyValueStorageWrapper对象 |
Return value | KeyValueStorageWrapper & | 移动后的KeyValueStorageWrapper对象 |
Exception Safety | noexcept | |
Thread Safety | no | |
Header file | #include "midware/perwrapper/kvs_wrapper.h" | |
Note |
Interface ID | SWSD-STPR-WRAPPER-API-KVS-006 |
ASIL | QM |
Name | KeyValueStorageWrapper::operator= |
Kind | function |
Description | 拷贝赋值运算符,禁用。 |
Symbol | midware::perwrapper::KeyValueStorageWrapper::operator=(const KeyValueStorageWrapper &) |
Visibility | delete |
Scope | class midware::perwrapper::KeyValueStorageWrapper |
Syntax | KeyValueStorageWrapper& operator=(const KeyValueStorage &)=delete; |
Header file | #include "midware/perwrapper/kvs_wrapper.h" |
Note |
Interface ID | SWSD-STPR-WRAPPER-API-KVS-007 |
ASIL | QM |
Name | KeyValueStorageWrapper::~KeyValueStorageWrapper |
Kind | function |
Description | 析构函数。 |
Symbol | midware::perwrapper::KeyValueStorageWrapper::~KeyValueStorageWrapper() |
Visibility | public |
Scope | class midware::perwrapper::KeyValueStorageWrapper |
Syntax | ~KeyValueStorageWrapper() noexcept; |
Exception Safety | noexcept |
Thread Safety | no |
Header file | #include "midware/perwrapper/kvs_wrapper.h" |
Note |
Interface ID | SWSD-STPR-WRAPPER-API-KVS-008 | |
ASIL | QM | |
Name | KeyValueStorageWrapper::GetAllKeys | |
Kind | function | |
Description | 获取当前键值库中全部可用的键。 | |
Symbol | midware::perwrapper::KeyValueStorageWrapper::GetAllKeys() | |
Visibility | public | |
Scope | class midware::perwrapper::KeyValueStorageWrapper | |
Syntax | ara::core::Result<ara::core::Vector<ara::core::String> > GetAllKeys() const noexcept; | |
Return value | ara::core::Result< ara::core::Vector< ara::core::String > > | 结果,包含可用键的列表,或为PerErrc中定义的错误之一,PerErrc参考文档《NeuSAR aCore_API文档_PER.docx》。 |
Exception Safety | noexcept | |
Thread Safety | no | |
Header file | #include "midware/perwrapper/kvs_wrapper.h" | |
Note |
Interface ID | SWSD-STPR-WRAPPER-API-KVS-009 | |
ASIL | QM | |
Name | KeyValueStorageWrapper::HasKey | |
Kind | function | |
Description | 校验键值库中是否存在指定的键。 | |
Symbol | midware::perwrapper::KeyValueStorageWrapper::HasKey(ara::core::StringView key) | |
Visibility | public | |
Scope | class midware::perwrapper::KeyValueStorageWrapper | |
Syntax | ara::core::Result<bool> HasKey(ara::core::StringView key) const noexcept; | |
Parameters (in) | key | 要检查的key |
Return value | ara::core::Result< bool > | 结果,如果可以找到键,则包含true;如果不能,则包含false,或为PerErrc中定义的错误之一,PerErrc参考文档《NeuSAR aCore_API文档_PER.docx》。 |
Exception Safety | noexcept | |
Thread Safety | no | |
Header file | #include "midware/perwrapper/kvs_wrapper.h" | |
Note |
Interface ID | SWSD-STPR-WRAPPER-API-KVS-010 | |
ASIL | QM | |
Name | KeyValueStorageWrapper::GetValue | |
Kind | function | |
Description | 返回键值库中指定键的值,模版类型T仅支持上位机支持的类型。 | |
Symbol | midware::perwrapper::KeyValueStorageWrapper::GetValue(ara::core::StringView key) | |
Visibility | public | |
Scope | class midware::perwrapper::KeyValueStorageWrapper | |
Syntax | template <class T> ara::core::Result<T> GetValue(ara::core::StringView key) const noexcept; | |
Template param: | T | 检索值的类型 |
Parameters (in) | key | 查找的key |
Return value | ara::core::Result< T > | 结果,检索到的值,或为PerErrc中定义的错误之一,PerErrc参考文档《NeuSAR aCore_API文档_PER.docx》。 |
Exception Safety | noexcept | |
Thread Safety | no | |
Header file | #include "midware/perwrapper/kvs_wrapper.h" | |
Note |
Interface ID | SWSD-STPR-WRAPPER-API-KVS-011 | |
ASIL | QM | |
Name | KeyValueStorageWrapper::SetValue | |
Kind | function | |
Description | 为键值库的一个键设置值,如果指定键的值已经存在,则覆盖;可以使用与老值不同类型的新值覆盖老的值。值的类型仅支持上位机配置的类型。 | |
Symbol | midware::perwrapper::KeyValueStorageWrapper::SetValue(ara::core::StringView key, const T &value) | |
Visibility | public | |
Scope | class midware::perwrapper::KeyValueStorageWrapper | |
Syntax | template <class T> ara::core::Result<void> SetValue(ara::core::StringView key, const T &value) noexcept; | |
Template param: | T | 值的类型 |
Parameters (in) | key | 键 |
value | 值 | |
Return value | ara::core::Result< void > | 结果,为空或为PerErrc中定义的错误之一,PerErrc参考文档《NeuSAR aCore_API文档_PER.docx》。 |
Exception Safety | noexcept | |
Thread Safety | no | |
Header file | #include "midware/perwrapper/kvs_wrapper.h" | |
Note | 如果当前策略为立即存储,则使用SyncToStorage将键值库刷写到磁盘。 |
Interface ID | SWSD-STPR-WRAPPER-API-KVS-012 | |
ASIL | QM | |
Name | KeyValueStorageWrapper::RemoveKey | |
Kind | function | |
Description | 从键值库中删除指定的键和对应的值。 | |
Symbol | midware::perwrapper::KeyValueStorageWrapper::RemoveKey(ara::core::StringView key) | |
Visibility | public | |
Scope | class midware::perwrapper::KeyValueStorageWrapper | |
Syntax | ara::core::Result<void> RemoveKey(ara::core::StringView key) noexcept; | |
Parameters (in) | key | 要删除的键 |
Return value | ara::core::Result< void > | 结果,为空或为PerErrc中定义的错误之一,PerErrc参考文档《NeuSAR aCore_API文档_PER.docx》。 |
Exception Safety | noexcept | |
Thread Safety | no | |
Header file | #include "midware/perwrapper/kvs_wrapper.h" | |
Note | 如果当前策略为立即存储,则使用SyncToStorage将键值库刷写到磁盘。 |
Interface ID | SWSD-STPR-WRAPPER-API-KVS-013 | |
ASIL | QM | |
Name | KeyValueStorageWrapper::RemoveAllKeys | |
Kind | function | |
Description | 删除键值库中所有的键及关联的值。 | |
Symbol | midware::perwrapper::KeyValueStorageWrapper::RemoveAllKeys() | |
Visibility | public | |
Scope | class midware::perwrapper::KeyValueStorageWrapper | |
Syntax | ara::core::Result<void> RemoveAllKeys() noexcept; | |
Return value | ara::core::Result< void > | 结果,为空或为PerErrc中定义的错误之一,PerErrc参考文档《NeuSAR aCore_API文档_PER.docx》。 |
Exception Safety | noexcept | |
Thread Safety | no | |
Header file | #include "midware/perwrapper/kvs_wrapper.h" | |
Note | 如果当前策略为立即存储,则使用SyncToStorage将键值库刷写到磁盘。 |