Emulator.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 EMULATOR_H
  14. #define EMULATOR_H
  15. //===========================================================================
  16. //
  17. // .DESCRIPTION
  18. //      This is the main fuction for the AXE VM emulator.
  19. //      It contains some global objects and a run method.
  20. //
  21. //===========================================================================
  22. #include <kernel_types.h>
  23. #include <TransporterRegistry.hpp>
  24. extern class  JobTable            globalJobTable;
  25. extern class  TimeQueue           globalTimeQueue;
  26. extern class  FastScheduler       globalScheduler;
  27. extern class  TransporterRegistry globalTransporterRegistry;
  28. extern struct GlobalData          globalData;
  29. #ifdef VM_TRACE
  30. extern class SignalLoggerManager globalSignalLoggers;
  31. #endif
  32. #ifndef NO_EMULATED_JAM
  33.   #define EMULATED_JAM_SIZE 1024
  34.   #define JAM_MASK ((EMULATED_JAM_SIZE * 4) - 1)
  35.   extern Uint8 theEmulatedJam[];
  36.   extern Uint32 theEmulatedJamIndex;
  37.   // last block entry, used in dumpJam() if jam contains no block entries
  38.   extern Uint32 theEmulatedJamBlockNumber;
  39. #else
  40.   const Uint8 theEmulatedJam[]=0;
  41.   const Uint32 theEmulatedJamIndex=0;
  42. #endif
  43. struct EmulatorData {
  44.   class Configuration * theConfiguration;
  45.   class WatchDog      * theWatchDog;
  46.   class ThreadConfig  * theThreadConfig;
  47.   class SimBlockList  * theSimBlockList;
  48.   class SocketServer  * m_socket_server;
  49.   /**
  50.    * Constructor
  51.    *
  52.    *  Sets all the pointers to NULL
  53.    */
  54.   EmulatorData();
  55.   
  56.   /**
  57.    * Create all the objects
  58.    */
  59.   void create();
  60.   
  61.   /**
  62.    * Destroys all the objects
  63.    */
  64.   void destroy();
  65. };
  66. extern struct EmulatorData globalEmulatorData;
  67. enum NdbShutdownType {
  68.   NST_Normal,
  69.   NST_Watchdog,
  70.   NST_ErrorHandler,
  71.   NST_ErrorHandlerSignal,
  72.   NST_Restart,
  73.   NST_ErrorInsert,
  74.   NST_ErrorHandlerStartup
  75. };
  76. enum NdbRestartType {
  77.   NRT_Default               = 0,
  78.   NRT_NoStart_Restart       = 1, // -n
  79.   NRT_DoStart_Restart       = 2, //
  80.   NRT_NoStart_InitialStart  = 3, // -n -i
  81.   NRT_DoStart_InitialStart  = 4  // -i
  82. };
  83. /**
  84.  * Shutdown/restart Ndb
  85.  *
  86.  * @param type        - Type of shutdown/restart
  87.  * @param restartType - Type of restart (only valid if type == NST_Restart)
  88.  */
  89. void 
  90. NdbShutdown(NdbShutdownType type, 
  91.     NdbRestartType restartType = NRT_Default);
  92. #endif