主要功能及技术要点
缓存、命中与过期
因为ARN
接口返回速度的影响,引入了缓存机制,以加快“读”操作的返回速度。
当通过中间层读取底层的信息时,信息分为“即时读取”、“缓存读取”或“延时读取”三种方式。
其中,“模拟基带”、“网络记数器”的值,都是“即时读取”的;而ARN
相关的参数,则是“缓存读取”,或者是“延时读取”的。
“缓存命中”,即缓存的数据有效;“缓存过期”,即缓存的数据无效。而判断过期,需要将缓存的数据打上系统时间戳。
如果经过数据操作接口操作数据,为了保证数据在操作过程中的可用性,一般设置缓存在3秒后更新。
我们为缓存操作定义了几个函数:
- LOAD() 载入缓存
- LOAD_VALID() 载入没有超过给定超时时间的缓存,如果超时则返回空
- SAVE() 保存缓存数据至文件
- EXPIRES_UNTIL() 让数据在给定时间内过期
- CLEAN() 数据立即过期
数据序列化与反序列化
数据调用可能来自不同的进程,为了让每一次的调用都可以共享使用缓存的数据,必须将缓存的数据编码后存储在文件中,当需要时,从文件中读取并解析为数据。
将数据通过编码,然后存储在文件中,此编码过程,为“序列化”(即“serialize”);
反之,从文件中读取数据,通过反序列化,解析为代码直接可用的数据,此解码过程,称为“反序列化”(即“unserialize”)。
数据合法性检查
硬件的能力参数存储在配置文件/etc/config/arn-spec
内。
根据设备型号及硬件的能力限制,过滤给定的参数至合法值。
HAL硬件接入层
向上提供统一的数据返回值,同时提供统一的数据操作接口,并根据硬件的能力。
向下兼容所有的硬件平台,根据CPU
和设备名称判断硬件平台,以消除“平台相关性”,做到“平台无关”。
HAL
不提供任何的数据过滤功能,但是在频繁操作硬件时,控制操作的频率,同时返回错误信息。