{
}
+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" );
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" );
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<string> ();
+ 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<int> ();
+ Config.set_limit_to_notify( limit_to_notify );
+
+ cout << LimitToNotifyCmdStr << "=" << limit_to_notify << endl;
+ }
+
+ if ( vm.count( HostNameCmdStr ) )
+ {
+ string host_name = vm[ HostNameCmdStr ].as<string> ();
+ 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
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 );
}
}
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
)
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<string> ();
- 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<int> ();
- Config.set_limit_to_notify( limit_to_notify );
-
- cout << LimitToNotifyCmdStr << "=" << limit_to_notify << endl;
- }
-
- if ( vm.count( HostNameCmdStr ) )
- {
- string host_name = vm[ HostNameCmdStr ].as<string> ();
- 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;
-}
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;