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

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 CONSUMER_RESTORE_HPP
  14. #define CONSUMER_RESTORE_HPP
  15. #include "consumer.hpp"
  16. struct restore_callback_t {
  17.   class BackupRestore *restore;
  18.   class TupleS tup;
  19.   class NdbConnection *connection;
  20.   int    retries;
  21.   int error_code;
  22.   restore_callback_t *next;
  23. };
  24. class BackupRestore : public BackupConsumer 
  25. {
  26. public:
  27.   BackupRestore(Uint32 parallelism=1) 
  28.   {
  29.     m_ndb = 0;
  30.     m_logCount = m_dataCount = 0;
  31.     m_restore = false;
  32.     m_restore_meta = false;
  33.     m_parallelism = parallelism;
  34.     m_callback = 0;
  35.     m_free_callback = 0;
  36.     m_transactions = 0;
  37.     m_cache.m_old_table = 0;
  38.   }
  39.   
  40.   virtual ~BackupRestore();
  41.   virtual bool init();
  42.   virtual void release();
  43.   virtual bool table(const TableS &);
  44.   virtual bool endOfTables();
  45.   virtual void tuple(const TupleS &);
  46.   virtual void tuple_free();
  47.   virtual void tuple_a(restore_callback_t *cb);
  48.   virtual void cback(int result, restore_callback_t *cb);
  49.   virtual bool errorHandler(restore_callback_t *cb);
  50.   virtual void exitHandler();
  51.   virtual void endOfTuples();
  52.   virtual void logEntry(const LogEntry &);
  53.   virtual void endOfLogEntrys();
  54.   virtual bool finalize_table(const TableS &);
  55.   void connectToMysql();
  56.   Ndb * m_ndb;
  57.   bool m_restore;
  58.   bool m_restore_meta;
  59.   Uint32 m_logCount;
  60.   Uint32 m_dataCount;
  61.   Uint32 m_parallelism;
  62.   volatile Uint32 m_transactions;
  63.   restore_callback_t *m_callback;
  64.   restore_callback_t *m_free_callback;
  65.   /**
  66.    * m_new_table_ids[X] = Y;
  67.    *   X - old table id
  68.    *   Y != 0  - new table
  69.    */
  70.   Vector<const NdbDictionary::Table*> m_new_tables;
  71.   struct {
  72.     const NdbDictionary::Table* m_old_table;
  73.     const NdbDictionary::Table* m_new_table;
  74.   } m_cache;
  75.   const NdbDictionary::Table* get_table(const NdbDictionary::Table* );
  76.   Vector<const NdbDictionary::Table*> m_indexes;
  77. };
  78. #endif