/* */ #ifndef _D_FEATURE_CONFIG_H_ #define _D_FEATURE_CONFIG_H_ #include "common.h" #include typedef map PortMap; typedef map FeatureMap; class FeatureConfig { private: static FeatureConfig* featureConfig; PortMap defaultPorts; FeatureMap supportedFeatures; Strings features; FeatureConfig(); ~FeatureConfig() {} public: static FeatureConfig* getInstance() { if(!featureConfig) { featureConfig = new FeatureConfig(); } return featureConfig; } static void release() { delete featureConfig; featureConfig = 0; } int32_t getDefaultPort(const string& protocol) const { PortMap::const_iterator itr = defaultPorts.find(protocol); if(itr == defaultPorts.end()) { return 0; } else { return itr->second; } } bool isSupported(const string& feature) const { FeatureMap::const_iterator itr = supportedFeatures.find(feature); if(itr == supportedFeatures.end()) { return false; } else { return itr->second; } } const Strings& getFeatures() const { return features; } string getConfigurationSummary() const { string summary; for(Strings::const_iterator itr = features.begin(); itr != features.end(); itr++) { summary += *itr; if(isSupported(*itr)) { summary += ": yes"; } else { summary += ": no"; } summary += "\n"; } return summary; } }; #endif // _D_FEATURE_CONFIG_H_