102 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
| Copyright (C) 2013-2014, MariaDB Corporation Ab
 | |
| 
 | |
| This file is distributed as part of the MariaDB Corporation MaxScale. It is free
 | |
| software: you can redistribute it and/or modify it under the terms of the
 | |
| GNU General Public License as published by the Free Software Foundation,
 | |
| version 2.
 | |
| 
 | |
| This program is distributed in the hope that it will be useful, but WITHOUT
 | |
| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 | |
| FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
 | |
| details.
 | |
| 
 | |
| You should have received a copy of the GNU General Public License along with
 | |
| this program; if not, write to the Free Software Foundation, Inc., 51
 | |
| Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 | |
| 
 | |
| Author: Jan Lindström jan.lindstrom@mariadb.com
 | |
| 
 | |
| */
 | |
| 
 | |
| #ifndef REPLICATION_LISTENER_MYSQL_GTID_H
 | |
| #define REPLICATION_LISTENER_MYSQL_GTID_H
 | |
| 
 | |
| #include <boost/asio.hpp>
 | |
| #include <boost/function.hpp>
 | |
| #include <boost/bind.hpp>
 | |
| 
 | |
| namespace mysql
 | |
| {
 | |
| 
 | |
| template <class T>
 | |
| inline std::string gno_to_string (const T& t)
 | |
| {
 | |
|     std::stringstream ss;
 | |
|     ss << t;
 | |
|     return ss.str();
 | |
| }
 | |
| 
 | |
| enum mysql_server_types {
 | |
|   MYSQL_SERVER_TYPE_NA = 0,
 | |
|   MYSQL_SERVER_TYPE_MARIADB = 1,
 | |
|   MYSQL_SERVER_TYPE_MYSQL = 2
 | |
| };
 | |
| 
 | |
| #define MYSQL_GTID_ENCODED_SIZE 24
 | |
| 
 | |
| class Gtid
 | |
| {
 | |
|  public:
 | |
| 
 | |
|   Gtid()
 | |
| 	  : m_real_gtid(false), m_domain_id(0), m_server_id(0), m_sequence_number(0),
 | |
| 		m_server_type(MYSQL_SERVER_TYPE_NA), m_gtid_length(0), m_mariadb_gtid(std::string(""))
 | |
|   {
 | |
| 	  memset(m_mysql_gtid, 0, MYSQL_GTID_ENCODED_SIZE);
 | |
|   }
 | |
| 
 | |
|   Gtid(const boost::uint32_t domain_id,
 | |
|        const boost::uint32_t server_id,
 | |
|        const boost::uint64_t sequence_number);
 | |
| 
 | |
|   Gtid(const unsigned char *mysql_gtid,
 | |
|        const boost::uint64_t gno);
 | |
| 
 | |
|   Gtid(const unsigned char *mysql_gtid);
 | |
| 
 | |
|   ~Gtid() {}
 | |
|  
 | |
|   bool is_real_gtid() const { return m_real_gtid;}
 | |
| 
 | |
|   const unsigned char* get_mysql_gtid() const { return m_mysql_gtid; }
 | |
| 
 | |
|   const unsigned char* get_gtid() const;
 | |
| 
 | |
|   size_t get_gtid_length() const { return m_gtid_length; }
 | |
| 
 | |
| 
 | |
|   std::string get_string() const;
 | |
| 
 | |
|   boost::uint32_t get_domain_id() const { return m_domain_id; }
 | |
|   boost::uint32_t get_server_id() const { return m_server_id; }
 | |
|   boost::uint32_t get_sequence_number() const { return m_sequence_number; }
 | |
| 
 | |
|  private:
 | |
| 
 | |
|   bool m_real_gtid;
 | |
|   mysql_server_types m_server_type;
 | |
| 
 | |
|   boost::uint32_t m_domain_id;
 | |
|   boost::uint32_t m_server_id;
 | |
|   boost::uint64_t m_sequence_number;
 | |
|   boost::uint32_t m_gtid_length;
 | |
| 
 | |
|   unsigned char m_mysql_gtid[MYSQL_GTID_ENCODED_SIZE];
 | |
|   std::string m_mariadb_gtid;
 | |
| };
 | |
| 
 | |
| }
 | |
| 
 | |
| #endif
 | 
