The Properties interface provides the following operations for reading property values:
string getProperty(string key)string getPropertyWithDefault(string key, string value)int getPropertyAsInt(string key)int getPropertyAsIntWithDefault(string key, int value)PropertyDict getPropertiesForPrefix(string prefix)PropertyDict. This operation is useful if you want to extract the properties for a specific subsystem. For example,getPropertiesForPrefix("Filesystem")Filesystem, such as Filesystem.MaxFileSize. You can then use the usual dictionary lookup operations to extract the properties of interest from the returned dictionary.With these operations, using application-specific properties now becomes the simple matter of initializing a communicator as usual, getting access to the communicator's properties, and examining the desired property value. For example:
{zcode:cpp}
// ...
Ice::CommunicatorPtr ic;
// ...
ic = Ice::initialize(argc, argv);
// Get the maximum file size.
//
Ice::PropertiesPtr props = ic->getProperties();
Ice::Int maxSize = props->getPropertyAsIntWithDefault("Filesystem.MaxFileSize", 1024);
// ...
{zcode} |
Assuming that you have created a configuration file that sets the Filesystem.MaxFileSize property (and that you have set the ICE_CONFIG variable or the --Ice.Config option accordingly), your application will pick up the configured value of the property.
|
The technique shown above allows you to obtain application-specific properties from a configuration file. If you also want the ability to set application-specific properties on the command line, you will need to parse command-line options for your prefix. (Calling |