标签:lock over uil 更新 setting 对象 module env 操作
注:设计和应用分离,抽象和平台分离,原理和使用分离
<!- -模块在系统中的作用, 模块结构概述, 模块原理概述 。。。-->
StaticSettings为Camera业务系统的配置单元,完成配置数据的加载,更新,访问等 功能。
Android&Qual Camera系统的配置从配置文件中加载,配置文件分为两部分存放:默认配置和自定义配置。那么,这些配置文件在哪呢?怎么用的呢?
系统的配置文件:
配置文件处理:
StaticSettings模块作用:将配置文件的数据加载带到系统中,系统根据配置配置运行。
StaticSettings模块组成:
StaticSettings模块分层:
StaticSettings模块功能:
图 2-1 StaticSettings模块的UML静态结构图
StaticSettings通过SettingsManager和StaticSettings实现配置的数据与操作分离。
SettingsManager类是对配置管理模块的抽象,在对象创建初始化时通过OverrideSettingsFile搜索、加载camxoverridesettings.txt用户设置的配置参数到HashMap。OverrideSettingsFile向SettingsManager提供IOverrideSettingsStore接口,用于对私有HashMap中存储的配置数据的访问。
HwEnvironment通过Titan17xGetStaticEntryMethods获取Titan17x平台的静态访问的一组操作句柄(HwContextStaticEntry),根据这组句柄中CreateHwFactory句柄,创建Titan17x平台对应的抽象工厂Titan17xFactory,这个工厂生产两种产品:Node和SettingsManager。之后HwEnvironment让HwFactory工厂(实际Titan17xFactory)生产一个SettingsManager(实际为Titan17xSettingsManager)。
SettingsManager作为静态配置模块的管理者,负责Settings数据的管理。SettingsManager加载Settings数据的两种方式:
* SettingsManager创建时传入被管理对象StaticSettings.
* SettingsManager对象加载配置文件中的配置数据创建对应的被管理对象StaticSettings.
这里主要介绍SettingsManager根据配置文件创建的配置数据这种实现。说到这种实现,会有个疑问:配置是如何从配置文件中加载到程序中的呢?
1.SettingsManager加载配置的过程
配置文件加载发生在SettingsManager对象创建阶段。由以下6步完成系统配置文件.xml加载:
step1:创建OverrideSettingsFile加载用户配置
OverrideSettingsFile类实现camxoverridesettings.xml文件查找,然后完成内容的解析,并将解析出的配置保存到私有成员HashMap结构中,这样camxoverridesettings.xml中的配置数据就从磁盘进入了内存。OverrideSettingsFile是IOverrideSettingsStore接口的实现类,以IOverrideSettingsStore接口向SettingsManager类提供私有数据(如HashMap中数据)的访问。
step2:系统默认配置加载
这里会涉及SettingsManager类部分接口(InitializeDefaultSettings、)的实现。在系统构建阶段通过settingscomposer.py脚本生成。
脚本生成SettingsManager类方法:
settingscomposer.py脚本根据g_camxsettings.xml生成SettingsManager部分方法的实现:g_camxsettings.h、g_camxsettings.cpp。
其中主要方法有:InitializeDefaultSettings系统默认配置初始值设置、InitializeDefaultDebugSettings系统默认调试配置初始值设置、LoadOverrideSettings加载重写配置、LoadOverrideProperties加载重写properties、DumpSettings导出配置参数。
SettingsManager对象在初始化时会调用脚本生成的部分接口加载g_camxsettings.xml对应的配置数据到SettingsManager管理的StaticSettings成员变量中。
step3:用用户配置覆盖系统默认配置
将step1加载到HashMap中的用户设置的配置参数重写到SettingsManager成员变量StaticSettings。即用camxoverridesettings.txt中用户设置的系统配置参数重写系统默认配置(g_camxsettings.xml)。
step4.用用户properties覆盖系统默认加载
用加载到OverrideSettingsStore中的properties重写SettingsManager的StaticSettings成员。
step5.StaticSettings系统静态参数的验证
目前没有实现
step6.更新静态参数到系统Log模块
由于用户可以通过修改properties或者修改文件系统中的camxoverridesettings.txt文件来修改Log调试配置,Log模块在Settings管理模块前初始化,所以这里SettingsManager加载配置后需要更新相关配置到Log模块。
2.更新系统配置
3.提供配置服务
配置读、配置写
标签:lock over uil 更新 setting 对象 module env 操作
原文地址:https://www.cnblogs.com/yemaomao/p/13176027.html