From: Guilherme Maciel Ferreira Date: Wed, 23 Feb 2011 16:19:45 +0000 (+0100) Subject: Reorganization of the ConfigurationReader class interface X-Git-Tag: v1.0~185 X-Git-Url: http://developer.intra2net.com/git/?a=commitdiff_plain;h=17beb79fca89631e843eeea03616a1cad6e35f92;p=pingcheck Reorganization of the ConfigurationReader class interface - Sticking methods together - Providing more descriptive name to some methods - Adding new methods to encapsulate some functionalities --- diff --git a/src/config/configurationreader.cpp b/src/config/configurationreader.cpp index 20ae2c9..6f95678 100644 --- a/src/config/configurationreader.cpp +++ b/src/config/configurationreader.cpp @@ -33,6 +33,32 @@ ConfigurationReader::~ConfigurationReader() { } +bool ConfigurationReader::parse( + const int argc, + char* argv[] +) +{ + BOOST_ASSERT( argc > 0 ); + BOOST_ASSERT( argv != NULL ); + + variables_map vm; + bool command_line_processed = process_command_line( argc, argv, vm ); + bool configuration_file_processed = process_configuration_file( vm ); + + bool input_processed = command_line_processed && configuration_file_processed; + if (input_processed) + { + return parse_configuration_options( vm ); + } + + return false; +} + +Configuration ConfigurationReader::get_configuration() const +{ + return Config; +} + options_description ConfigurationReader::get_generic_options() const { options_description options( "Generic options" ); @@ -44,6 +70,35 @@ options_description ConfigurationReader::get_generic_options() const return options; } +bool ConfigurationReader::is_generic_options( const variables_map& vm ) const +{ + bool is_help = vm.count( HelpCmdStr ); + bool is_version = vm.count( VersionCmdStr ); + bool is_a_generic_option = is_help || is_version; + + return is_a_generic_option; +} + +bool ConfigurationReader::parse_generic_options( + const variables_map& vm, + const options_description& visible_options +) +{ + if ( vm.count( HelpCmdStr ) ) + { + cout << visible_options << endl; + return true; + } + + if ( vm.count( VersionCmdStr ) ) + { + cout << PROJECT_NAME << " version " << VERSION_STRING << endl; + return true; + } + + return false; +} + options_description ConfigurationReader::get_configuration_options() const { options_description options( "Configuration" ); @@ -54,7 +109,38 @@ options_description ConfigurationReader::get_configuration_options() const return options; } -bool ConfigurationReader::parse_command_line( +bool ConfigurationReader::parse_configuration_options( const variables_map& vm ) +{ + if ( vm.count( ConfigFileCmdStr ) ) + { + string config_file_name = vm[ ConfigFileCmdStr ].as (); + Config.set_config_file_name( config_file_name ); + + cout << ConfigFileCmdStr << "=" << config_file_name << endl; + } + + if ( vm.count( LimitToNotifyCmdStr ) ) + { + uint32_t limit_to_notify = vm[ LimitToNotifyCmdStr ].as (); + Config.set_limit_to_notify( limit_to_notify ); + + cout << LimitToNotifyCmdStr << "=" << limit_to_notify << endl; + } + + if ( vm.count( HostNameCmdStr ) ) + { + string host_name = vm[ HostNameCmdStr ].as (); + Host host = Config.get_host(); + host.set_address( host_name ); + Config.set_host( host ); + + cout << HostNameCmdStr << "=" << host_name << endl; + } + + return true; +} + +bool ConfigurationReader::process_command_line( const int argc, char* argv[], variables_map& vm @@ -79,16 +165,9 @@ bool ConfigurationReader::parse_command_line( positional( p ).run(), vm ); notify( vm ); - if ( vm.count( HelpCmdStr ) ) + if ( is_generic_options( vm ) ) { - cout << visible << endl; - return false; - } - - if ( vm.count( VersionCmdStr ) ) - { - cout << PROJECT_NAME << " version " << VERSION_STRING << endl; - return false; + return parse_generic_options( vm, visible ); } } @@ -101,16 +180,16 @@ bool ConfigurationReader::parse_command_line( return true; } -bool ConfigurationReader::parse_configuration_file( variables_map& vm ) +bool ConfigurationReader::process_configuration_file( variables_map& vm ) { string config_file_name = ""; - if ( fill_configuration( vm ) ) + if ( parse_configuration_options( vm ) ) config_file_name = Config.get_config_file_name(); - return parse_configuration_file( config_file_name, vm ); + return process_configuration_file( config_file_name, vm ); } -bool ConfigurationReader::parse_configuration_file( +bool ConfigurationReader::process_configuration_file( const string& config_file_name, variables_map& vm ) @@ -135,60 +214,3 @@ bool ConfigurationReader::parse_configuration_file( return true; } - -bool ConfigurationReader::parse( - const int argc, - char* argv[] -) -{ - BOOST_ASSERT( argc > 0 ); - BOOST_ASSERT( argv != NULL ); - - variables_map vm; - bool command_line_parsed = parse_command_line( argc, argv, vm ); - bool configuration_file_parsed = parse_configuration_file( vm ); - - bool parser_success = command_line_parsed && configuration_file_parsed; - if (parser_success) - { - return fill_configuration( vm ); - } - - return false; -} - -bool ConfigurationReader::fill_configuration( const variables_map& vm ) -{ - if ( vm.count( ConfigFileCmdStr ) ) - { - string config_file_name = vm[ ConfigFileCmdStr ].as (); - Config.set_config_file_name( config_file_name ); - - cout << ConfigFileCmdStr << "=" << config_file_name << endl; - } - - if ( vm.count( LimitToNotifyCmdStr ) ) - { - uint32_t limit_to_notify = vm[ LimitToNotifyCmdStr ].as (); - Config.set_limit_to_notify( limit_to_notify ); - - cout << LimitToNotifyCmdStr << "=" << limit_to_notify << endl; - } - - if ( vm.count( HostNameCmdStr ) ) - { - string host_name = vm[ HostNameCmdStr ].as (); - Host host = Config.get_host(); - host.set_address( host_name ); - Config.set_host( host ); - - cout << HostNameCmdStr << "=" << host_name << endl; - } - - return true; -} - -Configuration ConfigurationReader::get_configuration() const -{ - return Config; -} diff --git a/src/config/configurationreader.h b/src/config/configurationreader.h index 8c9af59..038368f 100644 --- a/src/config/configurationreader.h +++ b/src/config/configurationreader.h @@ -24,19 +24,31 @@ public: private: boost::program_options::options_description get_generic_options() const; + bool is_generic_options( + const boost::program_options::variables_map& vm + ) const; + bool parse_generic_options( + const boost::program_options::variables_map& vm, + const boost::program_options::options_description& visible_options + ); + boost::program_options::options_description get_configuration_options() const; + bool parse_configuration_options( + const boost::program_options::variables_map& vm + ); - bool parse_command_line( + bool process_command_line( const int argc, char* argv[], boost::program_options::variables_map& vm ); - bool parse_configuration_file( boost::program_options::variables_map& vm ); - bool parse_configuration_file( + bool process_configuration_file( + boost::program_options::variables_map& vm + ); + bool process_configuration_file( const std::string& config_file_name, boost::program_options::variables_map& vm ); - bool fill_configuration( const boost::program_options::variables_map& vm ); private: Configuration Config;