在Ice 程序中使用属性


读取属性

Ice::CommunicatorPtr ic = Ice::initialize(argc, argv);
Ice::PropertiesPtr props = ic->getProperties();
Ice::Int maxSize= props->getPropertyAsIntWithDefault("Filesystem.MaxFileSize",1024);

假定你创建了一个配置文件,用于设置Filesystem.MaxFileSize属性;

并相应地设置了ICE_CONFIG变量或--Ice.Config选项;

你的应用将会获得所配置的属性值。


getPropertiesForPrefix:这个操作把以指定前缀起头的所有属性、作为PropertyDict类型的词典返回。如果你想要提取指定的子系统的各个属性,这个操作很有用。例如,getPropertiesForPrefix("Filesystem")返回以前缀Filesystem起头的所有属性,比如Filesystem.MaxFileSize。随后,你可以用通常的词典查找操作,从返回的词典中提取你感兴趣的属性。有了这些查找操作,使用应用专用的属性现在变得简单了,你需要做的只是像平常一样初始化通信器、获得对通信器属性的访问,然后检查你需要的属性值。


设置属性


setProperty:操作把某个属性设成指定的值(只要把属性设成空串,你就可以清除它)。只有在你调用initialize之前这个操作才有用。这是因为,Ice run time只在你调用initialize时,对属性值进行一次读取。在你初始化通信器之后,Ice run time不保证它会关注属性值的变化。当然,这带来了这样一个问题:你怎样才能设置属性值、并让通信器认可它?

为了允许你在初始化通信器之前设置属性,Ice run time提供了一个重载的助手函数,叫作getDefaultProperties。

namespace Ice {
	PropertiesPtr getDefaultProperties();
	PropertiesPtr getDefaultProperties(int &argc, char *argv[]);
};

getDefaultProperties返回一个进行了初始化的属性集,初始化所用的或是ICE_CONFIG环境变量所指定的配置文件的内容,或者,在你调用的是第二个版本的情况下,是ICE_CONFIG环境变量或--Ice.Config选项所指定的配置文件的内容——同时,在命令行上指定的属性设置会覆盖配置文件中的设置。


Ice::PropertiesPtr props = Ice::getDefaultProperties(argc, argv);
props->setProperty("Ice.Trace.Network", "0");
props->setProperty("Ice.Trace.Protocol", "0");
Ice::CommunicatorPtr ic = Ice::initialize(argc, argv);








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值