26#ifndef ROUTER_MYSQL_ROUTER_INCLUDED
27#define ROUTER_MYSQL_ROUTER_INCLUDED
126 const std::vector<std::string> &arguments,
127 std::ostream &out_stream = std::cout,
128 std::ostream &err_stream = std::cerr
157 MySQLRouter(
const int argc,
char **argv, std::ostream &out_stream,
158 std::ostream &err_stream
187 bool raw_mode =
false,
bool use_os_log =
false);
299#if !defined(_MSC_VER) && !defined(UNIT_TESTS)
331 virtual void init(
const std::string &program_name,
332 const std::vector<std::string> &arguments);
404 void show_usage(
bool include_options) noexcept;
470 std::unique_ptr<mysql_harness::Loader>
loader_;
513 FRIEND_TEST(Bug24909259, PasswordPrompt_plain);
514 FRIEND_TEST(Bug24909259, PasswordPrompt_keyed);
Defining the commandline argument handler class CmdArgHandler.
Handles command line arguments.
Definition: arg_handler.h:141
Definition: keyring_handler.h:34
Definition: router_conf.h:52
Manage the MySQL Router application.
Definition: router_app.h:81
std::ostream & out_stream_
Definition: router_app.h:487
void assert_not_bootstrap_mode(const std::string &option_name) const
verify that option given by user is not used with bootstrap option (–bootstrap or -B).
Definition: router_app.cc:841
KeyringHandler keyring_
Definition: router_app.h:485
void stop()
Stop and cleanup the MySQL Router application.
Definition: router_app.cc:760
void init_dynamic_state(mysql_harness::Config &config)
Definition: router_app.cc:385
const std::vector< std::string > & get_extra_config_files() const noexcept
Gets list of extra configuration files passed using command line.
Definition: router_app.h:295
bool showing_info_
Whether we are showing information on command line, for example, using –help or –version.
Definition: router_app.h:475
void prepare_command_options() noexcept
Prepares a command line option.
Definition: router_app.cc:848
MySQLRouterConf bootstrapper_
Definition: router_app.h:511
uint32_t get_router_id(mysql_harness::Config &config)
Definition: router_app.cc:328
std::vector< std::string > check_config_files()
Finds all valid configuration files.
Definition: router_app.cc:798
std::string get_package_name() noexcept
void show_help()
Shows the help screen on the console.
Definition: router_app.cc:951
bool core_file_
Definition: router_app.h:490
void parse_command_options(const std::vector< std::string > &arguments)
Process command line options.
Definition: router_app.cc:224
std::string user_cmd_line_
Value of the –user parameter given on the command line if router is launched in bootstrap mode.
Definition: router_app.h:495
std::string username_
Value of the –user parameter given on the command line.
Definition: router_app.h:502
std::vector< std::string > extra_config_files_
Vector with extra configuration file locations as strings.
Definition: router_app.h:458
virtual void init(const std::string &program_name, const std::vector< std::string > &arguments)
Initializes the MySQL Router application.
Definition: router_app.cc:236
void init_keyring(mysql_harness::Config &config)
Definition: router_app.cc:355
mysql_harness::LoaderConfig * make_config(const std::map< std::string, std::string > params, const std::vector< std::string > &config_files)
Definition: router_app.cc:461
bool pid_file_created_
Definition: router_app.h:465
const std::vector< std::string > & get_default_config_files() const noexcept
Gets list of default configuration files.
Definition: router_app.h:273
std::unique_ptr< mysql_harness::Loader > loader_
Harness loader.
Definition: router_app.h:470
std::string pid_file_path_
PID file location.
Definition: router_app.h:464
CmdArgHandler arg_handler_
CmdArgHandler object handling command line arguments.
Definition: router_app.h:468
std::string get_version() noexcept
Returns the MySQL Router version as string.
Definition: router_app.cc:789
mysql_harness::Path origin_
Path to origin of executable.
Definition: router_app.h:483
mysql_harness::SignalHandler signal_handler_
Definition: router_app.h:509
std::vector< std::string > default_config_files_
Vector with default configuration file locations as strings.
Definition: router_app.h:456
const std::vector< std::string > & get_config_files() const noexcept
Gets list of configuration files passed using command line.
Definition: router_app.h:284
void start()
Starts the MySQL Router application.
Definition: router_app.cc:500
MySQLRouter()
Default constructor.
Definition: router_app.h:93
std::vector< std::string > config_files_
Vector with configuration files passed through command line arguments.
Definition: router_app.h:461
virtual ~MySQLRouter()=default
void show_usage() noexcept
Definition: router_app.cc:1138
static void init_main_logger(mysql_harness::LoaderConfig &config, bool raw_mode=false, bool use_os_log=false)
Initialize main logger.
Definition: router_app.cc:396
std::ostream & err_stream_
Definition: router_app.h:488
void set_default_config_files(const char *locations) noexcept
Sets default configuration file locations.
Definition: router_app.cc:771
mysqlrouter::SysUserOperationsBase * sys_user_operations_
Pointer to the object to be used to perform system specific user-related operations.
Definition: router_app.h:506
void init_loader(mysql_harness::LoaderConfig &config)
Definition: router_app.cc:487
bool can_start_
Whether the MySQLRouter can start or not.
Definition: router_app.h:472
std::tuple< const uint8_t, const uint8_t, const uint8_t > version_
Tuple describing the MySQL Router version, with major, minor and patch level.
Definition: router_app.h:453
std::string get_version_line() noexcept
Returns string version details.
Definition: router_app.cc:791
Configuration section.
Definition: config_parser.h:141
Configuration file handler for the loader.
Definition: loader_config.h:46
Class representing a path in a file system.
Definition: filesystem.h:63
Definition: signal_handler.h:41
Base class to allow multiple SysUserOperations implementations.
Definition: sys_user_operations.h:45
static SysUserOperations * instance()
Definition: sys_user_operations.cc:49
Definition: gcs_xcom_synode.h:64
std::vector< T, ut::allocator< T > > vector
Specialization of vector which uses allocator.
Definition: ut0new.h:2876
std::map< Key, Value, Compare, ut::allocator< std::pair< const Key, Value > > > map
Specialization of map which uses ut_allocator.
Definition: ut0new.h:2894
static const size_t kHelpScreenWidth
Definition: router_app.h:52
static const std::string kDefaultSystemUserName
Definition: router_app.h:56
static const std::string kSystemRouterName
Definition: router_app.h:55
static const size_t kHelpScreenIndent
Definition: router_app.h:53
void expose_router_configuration(const bool initial, const mysql_harness::ConfigSection §ion)
Expose the configured application-level options (the ones from [DEFAULT] section that are not specifi...
Definition: router_app.cc:1197
Defining the main class MySQLRouter.