#ifndef CONFIG_H #define CONFIG_H #include #include "Proxy.h" class ProxyEntryGeneric; class ProxyEntryStatic; /** * @brief Singleton class that represents client configuration */ class Config { public: /** * @brief Retrieve application-wide instance of Config class * @return Pointer to singleton instance of Config class */ static Config *CurrentConfig(); /** * @brief Update client configuration * @todo update config periodically on timer events */ void AcquireConfig(); /** * @brief Check whether current confguration is valid
* It may become invalid in case if server is not reachable. * So every time you want to access Config membres or methods you should check this value * @return true if configuration is valid and false otherwise */ bool IsConfigValid(); /** * @brief Get list of country names where at least one proxy available
* (generic proxy records only) * @return Alphabetically sorted vector with unique country names */ std::vector GetCountries(); /** * @brief Get list of country states where at least one proxy available
* (generic proxy records only) * @param country name of country to get list of states for * @return Alphabetically sorted vector with unique state names.
* Resultant vector may be empty in case if there are no states in specified country */ std::vector GetStates(std::string &country); /** * @brief Get list of cities in particular country without states
* (generic proxy records only) * @param country name of country to get list of states for * @return Alphabetically sorted vector with unique city names
*/ std::vector GetCities(std::string &country); /** * @brief Get list of cities in particular country and state
* (generic proxy records only) * @param country name of country to get list of states for * @param state name state to get list of proxies for
* @return Alphabetically sorted vector with unique city names */ std::vector GetCities(std::string &country, std::string &state); protected: Config(); private: static Config *self; bool configValid; std::vector genericProxy; std::vector staticProxy; int ReadGenericProxy(); int ReadStaticProxy(); }; #endif