userInterface.cpp
上传用户: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. /***************************************************************
  14. * I N C L U D E D   F I L E S                                  *
  15. ***************************************************************/
  16. #include <ndb_global.h>
  17. #include <time.h>
  18. #include "ndb_schema.hpp"
  19. #include "ndb_error.hpp"
  20. #include "userInterface.h"
  21. #include <NdbMutex.h>
  22. #include <NdbThread.h>
  23. #include <NdbTick.h>
  24. #include <NdbApi.hpp>
  25. #include <NdbOut.hpp>
  26. /***************************************************************
  27. * L O C A L   C O N S T A N T S                                *
  28. ***************************************************************/
  29. /***************************************************************
  30. * L O C A L   D A T A   S T R U C T U R E S                    *
  31. ***************************************************************/
  32. /***************************************************************
  33. * L O C A L   F U N C T I O N S                                *
  34. ***************************************************************/
  35. #ifndef NDB_WIN32
  36. #include <unistd.h>
  37. #endif
  38. static NdbMutex* startupMutex = NdbMutex_Create();
  39. Ndb*
  40. asyncDbConnect(int parallellism){
  41.   NdbMutex_Lock(startupMutex);
  42.   Ndb * pNDB = new Ndb("");
  43.   
  44.   pNDB->init(parallellism + 1);
  45.   
  46.   while(pNDB->waitUntilReady() != 0){
  47.   }
  48.   
  49.   NdbMutex_Unlock(startupMutex);
  50.   return pNDB;
  51. }
  52. void 
  53. asyncDbDisconnect(Ndb* pNDB)
  54. {
  55.   delete pNDB;
  56. }
  57. double
  58. userGetTime(void)
  59. {
  60.   static bool initialized = false;
  61.   static NDB_TICKS initSecs = 0;
  62.   static Uint32 initMicros = 0;
  63.   double timeValue = 0;
  64.   if ( !initialized ) {
  65.     initialized = true;
  66.     NdbTick_CurrentMicrosecond(&initSecs, &initMicros); 
  67.     timeValue = 0.0;
  68.   } else {
  69.     NDB_TICKS secs = 0;
  70.     Uint32 micros = 0;
  71.     NdbTick_CurrentMicrosecond(&secs, &micros);
  72.     double s  = (double)secs  - (double)initSecs;
  73.     double us = (double)micros - (double)initMicros;
  74.     
  75.     timeValue = s + (us / 1000000.0);
  76.   }
  77.   return timeValue;
  78. }
  79. void showTime()
  80. {
  81.   char buf[128];
  82.   struct tm* tm_now;
  83.   time_t now;
  84.   now = ::time((time_t*)NULL);
  85.   tm_now = ::gmtime(&now);
  86.   BaseString::snprintf(buf, 128,
  87.      "%d-%.2d-%.2d %.2d:%.2d:%.2d", 
  88.      tm_now->tm_year + 1900, 
  89.      tm_now->tm_mon, 
  90.      tm_now->tm_mday,
  91.      tm_now->tm_hour,
  92.      tm_now->tm_min,
  93.      tm_now->tm_sec);
  94.   ndbout_c("Time: %s", buf);
  95. }