ndb_cluster_connection.hpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #ifndef CLUSTER_CONNECTION_HPP
  14. #define CLUSTER_CONNECTION_HPP
  15. /**
  16.  * @class Ndb_cluster_connection
  17.  * @brief Represents a connection to a cluster of storage nodes
  18.  *
  19.  * Always start your application program by creating a
  20.  * Ndb_cluster_connection object. Your application should contain
  21.  * only one Ndb_cluster_connection.  Your application connects to
  22.  * a cluster management server when method connect() is called.
  23.  * With the method wait_until_ready() it is possible to wait
  24.  * for the connection to one or several storage nodes.
  25.  */
  26. class Ndb_cluster_connection {
  27. public:
  28.   /**
  29.    * Create a connection to a cluster of storage nodes
  30.    *
  31.    * @param specify the connectstring for where to find the
  32.    *        management server
  33.    */
  34.   Ndb_cluster_connection(const char * connect_string = 0);
  35.   ~Ndb_cluster_connection();
  36.   /**
  37.    * Connect to a cluster management server
  38.    *
  39.    * @param no_retries specifies the number of retries to perform
  40.    *        if the connect fails, negative number results in infinite
  41.    *        number of retries
  42.    * @param retry_delay_in_seconds specifies how often retries should
  43.    *        be performed
  44.    * @param verbose specifies if the method should print progess
  45.    *
  46.    * @return 0 if success, 
  47.    *         1 if retriable error,
  48.    *        -1 if non-retriable error
  49.    */
  50.   int connect(int no_retries=0, int retry_delay_in_seconds=1, int verbose=0);
  51. #ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
  52.   int start_connect_thread(int (*connect_callback)(void)= 0);
  53. #endif
  54.   /**
  55.    * Wait until one or several storage nodes are connected
  56.    *
  57.    * @param time_out_for_first_alive number of seconds to wait until
  58.    *        first alive node is detected
  59.    * @param timeout_after_first_alive number of seconds to wait after
  60.    *        first alive node is detected
  61.    *
  62.    * @return 0 all nodes alive,
  63.    *         > 0 at least one node alive,
  64.    *         < 0 error
  65.    */
  66.   int wait_until_ready(int timeout_for_first_alive,
  67.        int timeout_after_first_alive);
  68. #ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
  69.   const char *get_connectstring(char *buf, int buf_sz) const;
  70.   int get_connected_port() const;
  71.   const char *get_connected_host() const;
  72.   void set_optimized_node_selection(int val);
  73.   unsigned no_db_nodes();
  74. #endif
  75. private:
  76.   friend class Ndb;
  77.   friend class NdbImpl;
  78.   friend class Ndb_cluster_connection_impl;
  79.   class Ndb_cluster_connection_impl & m_impl;
  80.   Ndb_cluster_connection(Ndb_cluster_connection_impl&);
  81. };
  82. #endif