Added some helper functions into the MaxScale class and default parameters into the connection creation functions. Also made the ip() function const correct.
		
			
				
	
	
		
			268 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			268 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef MAXSCALES_H
 | 
						|
#define MAXSCALES_H
 | 
						|
 | 
						|
#include "nodes.h"
 | 
						|
#include "mariadb_func.h"
 | 
						|
#include "mariadb_nodes.h"
 | 
						|
 | 
						|
class Maxscales: public Nodes
 | 
						|
{
 | 
						|
public:
 | 
						|
    enum service
 | 
						|
    {
 | 
						|
        RWSPLIT,
 | 
						|
        READCONN_MASTER,
 | 
						|
        READCONN_SLAVE
 | 
						|
    };
 | 
						|
 | 
						|
    Maxscales(const char *pref, const char *test_cwd, bool verbose);
 | 
						|
    int read_env();
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief rwsplit_port RWSplit service port
 | 
						|
     */
 | 
						|
    int rwsplit_port[256];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief readconn_master_port ReadConnection in master mode service port
 | 
						|
     */
 | 
						|
    int readconn_master_port[256];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief readconn_slave_port ReadConnection in slave mode service port
 | 
						|
     */
 | 
						|
    int readconn_slave_port[256];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief Get port number of a MaxScale service
 | 
						|
     *
 | 
						|
     * @param type Type of service
 | 
						|
     * @param m    MaxScale instance to use
 | 
						|
     *
 | 
						|
     * @return Port number of the service
 | 
						|
     */
 | 
						|
    int port(enum service type = RWSPLIT, int m = 0) const;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief binlog_port binlog router service port
 | 
						|
     */
 | 
						|
    int binlog_port[256];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief conn_rwsplit  MYSQL connection struct to RWSplit service
 | 
						|
     */
 | 
						|
    MYSQL *conn_rwsplit[256];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief conn_master   MYSQL connection struct to ReadConnection in master mode service
 | 
						|
     */
 | 
						|
    MYSQL *conn_master[256];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief conn_slave MYSQL connection struct to ReadConnection in slave mode service
 | 
						|
     */
 | 
						|
    MYSQL *conn_slave[256];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief routers Array of 3 MYSQL handlers which contains copies of conn_rwsplit, conn_master, conn_slave
 | 
						|
     */
 | 
						|
    MYSQL *routers[256][3];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief ports of 3 int which contains copies of rwsplit_port, readconn_master_port, readconn_slave_port
 | 
						|
     */
 | 
						|
    int ports[256][3];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief maxadmin_Password Password to access Maxadmin tool
 | 
						|
     */
 | 
						|
    char maxadmin_password[256][256];
 | 
						|
 | 
						|
    /**
 | 
						|
      * @brief maxscale_cnf full name of Maxscale configuration file
 | 
						|
      */
 | 
						|
    char maxscale_cnf[256][4096];
 | 
						|
 | 
						|
    /**
 | 
						|
      * @brief maxscale_log_dir name of log files directory
 | 
						|
      */
 | 
						|
    char maxscale_log_dir[256][4096];
 | 
						|
 | 
						|
    /**
 | 
						|
      * @brief maxscale_lbinog_dir name of binlog files (for binlog router) directory
 | 
						|
      */
 | 
						|
    char maxscale_binlog_dir[256][4096];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief N_ports Default number of routers
 | 
						|
     */
 | 
						|
    int N_ports[256];
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
    * @brief test_dir path to test application
 | 
						|
    */
 | 
						|
    char test_dir[4096];
 | 
						|
 | 
						|
    bool ssl;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief ConnectMaxscale   Opens connections to RWSplit, ReadConn master and ReadConn slave Maxscale services
 | 
						|
     * Opens connections to RWSplit, ReadConn master and ReadConn slave Maxscale services
 | 
						|
     * Connections stored in maxscales->conn_rwsplit[0], maxscales->conn_master[0] and maxscales->conn_slave[0] MYSQL structs
 | 
						|
     * @return 0 in case of success
 | 
						|
     */
 | 
						|
    int connect_maxscale(int m = 0);
 | 
						|
    int connect(int m = 0)
 | 
						|
    {
 | 
						|
        return connect_maxscale(m);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief CloseMaxscaleConn Closes connection that were opened by ConnectMaxscale()
 | 
						|
     * @return 0
 | 
						|
     */
 | 
						|
    int close_maxscale_connections(int m = 0);
 | 
						|
    int disconnect(int m = 0)
 | 
						|
    {
 | 
						|
        return close_maxscale_connections(m);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief ConnectRWSplit    Opens connections to RWSplit and store MYSQL struct in maxscales->conn_rwsplit[0]
 | 
						|
     * @return 0 in case of success
 | 
						|
     */
 | 
						|
    int connect_rwsplit(int m = 0);
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief ConnectReadMaster Opens connections to ReadConn master and store MYSQL struct in maxscales->conn_master[0]
 | 
						|
     * @return 0 in case of success
 | 
						|
     */
 | 
						|
    int connect_readconn_master(int m = 0);
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief ConnectReadSlave Opens connections to ReadConn slave and store MYSQL struct in maxscales->conn_slave[0]
 | 
						|
     * @return 0 in case of success
 | 
						|
     */
 | 
						|
    int connect_readconn_slave(int m = 0);
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief OpenRWSplitConn   Opens new connections to RWSplit and returns MYSQL struct
 | 
						|
     * To close connection mysql_close() have to be called
 | 
						|
     * @return MYSQL struct
 | 
						|
     */
 | 
						|
    MYSQL * open_rwsplit_connection(int m = 0)
 | 
						|
    {
 | 
						|
        return open_conn(rwsplit_port[m], IP[m], user_name, password, ssl);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief OpenReadMasterConn    Opens new connections to ReadConn master and returns MYSQL struct
 | 
						|
     * To close connection mysql_close() have to be called
 | 
						|
     * @return MYSQL struct
 | 
						|
     */
 | 
						|
    MYSQL * open_readconn_master_connection(int m = 0)
 | 
						|
    {
 | 
						|
        return open_conn(readconn_master_port[m], IP[m], user_name,
 | 
						|
                         password, ssl);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief OpenReadSlaveConn    Opens new connections to ReadConn slave and returns MYSQL struct
 | 
						|
     * To close connection mysql_close() have to be called
 | 
						|
     * @return  MYSQL struct
 | 
						|
     */
 | 
						|
    MYSQL * open_readconn_slave_connection(int m = 0)
 | 
						|
    {
 | 
						|
        return open_conn(readconn_slave_port[m], IP[m], user_name,
 | 
						|
                         password, ssl);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief CloseRWSplit Closes RWplit connections stored in maxscales->conn_rwsplit[0]
 | 
						|
     */
 | 
						|
    void close_rwsplit(int m = 0)
 | 
						|
    {
 | 
						|
        mysql_close(conn_rwsplit[m]);
 | 
						|
        conn_rwsplit[m] = NULL;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief CloseReadMaster Closes ReadConn master connections stored in maxscales->conn_master[0]
 | 
						|
     */
 | 
						|
    void close_readconn_master(int m = 0)
 | 
						|
    {
 | 
						|
        mysql_close(conn_master[m]);
 | 
						|
        conn_master[m] = NULL;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief CloseReadSlave Closes ReadConn slave connections stored in maxscales->conn_slave[0]
 | 
						|
     */
 | 
						|
    void close_readconn_slave(int m = 0)
 | 
						|
    {
 | 
						|
        mysql_close(conn_slave[m]);
 | 
						|
        conn_slave[m] = NULL;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief restart_maxscale Issues 'service maxscale restart' command
 | 
						|
     */
 | 
						|
    int restart_maxscale(int m = 0);
 | 
						|
    int restart(int m = 0)
 | 
						|
    {
 | 
						|
        return restart_maxscale(m);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief start_maxscale Issues 'service maxscale start' command
 | 
						|
     */
 | 
						|
    int start_maxscale(int m = 0);
 | 
						|
    int start(int m = 0)
 | 
						|
    {
 | 
						|
        return start_maxscale(m);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief stop_maxscale Issues 'service maxscale stop' command
 | 
						|
     */
 | 
						|
    int stop_maxscale(int m = 0);
 | 
						|
    int stop(int m = 0)
 | 
						|
    {
 | 
						|
        return stop_maxscale(m);
 | 
						|
    }
 | 
						|
 | 
						|
    int execute_maxadmin_command(int m, const char * cmd);
 | 
						|
    int execute_maxadmin_command_print(int m, const char * cmd);
 | 
						|
    int check_maxadmin_param(int m, const char *command, const  char *param, const  char *value);
 | 
						|
    int get_maxadmin_param(int m, const char *command, const char *param, char *result);
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief get_maxscale_memsize Gets size of the memory consumed by Maxscale process
 | 
						|
     * @return memory size in kilobytes
 | 
						|
     */
 | 
						|
    long unsigned get_maxscale_memsize(int m = 0);
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief find_master_maxadmin Tries to find node with 'Master' status using Maxadmin connand 'show server'
 | 
						|
     * @param nodes Mariadb_nodes object
 | 
						|
     * @return node index if one master found, -1 if no master found or several masters found
 | 
						|
     */
 | 
						|
    int find_master_maxadmin(Mariadb_nodes * nodes, int m = 0);
 | 
						|
    int find_slave_maxadmin(Mariadb_nodes * nodes, int m = 0);
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief Get the set of labels that are assigned to server @c name
 | 
						|
     *
 | 
						|
     * @param name The name of the server that must be present in the output `maxadmin list servers`
 | 
						|
     *
 | 
						|
     * @param m Number of Maxscale node
 | 
						|
     *
 | 
						|
     * @return A set of string labels assigned to this server
 | 
						|
     */
 | 
						|
    StringSet get_server_status(const char* name, int m = 0);
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
#endif // MAXSCALES_H
 |