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

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. #include "Config.hpp"
  14. #include <ctype.h>
  15. #include <string.h>
  16. #include "MgmtErrorReporter.hpp"
  17. #include <Properties.hpp>
  18. //*****************************************************************************
  19. //  Ctor / Dtor
  20. //*****************************************************************************
  21. Config::Config() {
  22.   m_oldConfig = 0;
  23.   m_configValues = 0;
  24. }
  25. Config::~Config() {
  26.   if(m_configValues != 0){
  27.     free(m_configValues);
  28.   }
  29.   if(m_oldConfig != 0)
  30.     delete m_oldConfig;
  31. }
  32. /*****************************************************************************/
  33. void 
  34. Config::printAllNameValuePairs(NdbOut &out,
  35.        const Properties *prop,
  36.        const char* s) const {
  37.   Properties::Iterator it(prop);
  38.   const Properties * section = m_info.getInfo(s);
  39.   for (const char* n = it.first(); n != NULL; n = it.next()) {
  40.     Uint32 int_value;
  41.     const char* str_value;
  42.     Uint64 int_64;
  43.     if(!section->contains(n))
  44.       continue;
  45.     if (m_info.getStatus(section, n) == ConfigInfo::CI_INTERNAL) 
  46.       continue;
  47.     if (m_info.getStatus(section, n) == ConfigInfo::CI_DEPRICATED)
  48.       continue;
  49.     if (m_info.getStatus(section, n) == ConfigInfo::CI_NOTIMPLEMENTED)
  50.       continue;
  51.     out << n << ": ";
  52.     switch (m_info.getType(section, n)) {
  53.     case ConfigInfo::CI_INT:
  54.       MGM_REQUIRE(prop->get(n, &int_value)); 
  55.       out << int_value;
  56.       break;
  57.     case ConfigInfo::CI_INT64:
  58.       MGM_REQUIRE(prop->get(n, &int_64)); 
  59.       out << int_64;
  60.       break;
  61.       
  62.     case ConfigInfo::CI_BOOL:
  63.       MGM_REQUIRE(prop->get(n, &int_value)); 
  64.       if (int_value) {
  65. out << "Y";
  66.       } else {
  67. out << "N";
  68.       }
  69.       break;
  70.     case ConfigInfo::CI_STRING:
  71.       MGM_REQUIRE(prop->get(n, &str_value)); 
  72.       out << str_value;
  73.       break;
  74.     case ConfigInfo::CI_SECTION:
  75.       out << "SECTION";
  76.       break;
  77.     }      
  78.     out << endl;
  79.   }
  80. }
  81. /*****************************************************************************/
  82.    
  83. void Config::printConfigFile(NdbOut &out) const {
  84. #if 0
  85.   Uint32 noOfNodes, noOfConnections, noOfComputers;
  86.   MGM_REQUIRE(get("NoOfNodes", &noOfNodes));
  87.   MGM_REQUIRE(get("NoOfConnections", &noOfConnections));
  88.   MGM_REQUIRE(get("NoOfComputers", &noOfComputers));
  89.   out << 
  90.     "######################################################################" <<
  91.     endl <<
  92.     "#" << endl <<
  93.     "#  NDB Cluster  System configuration" << endl <<
  94.     "#" << endl <<
  95.     "######################################################################" <<
  96.     endl << 
  97.     "# No of nodes (DB, API or MGM):  " << noOfNodes << endl <<
  98.     "# No of connections:             " << noOfConnections << endl <<
  99.     "######################################################################" <<
  100.     endl;
  101.   /**************************
  102.    * Print COMPUTER configs *
  103.    **************************/
  104.   const char * name;
  105.   Properties::Iterator it(this);
  106.   for(name = it.first(); name != NULL; name = it.next()){
  107.     if(strncasecmp("Computer_", name, 9) == 0){ 
  108.       
  109.       const Properties *prop;
  110.       out << endl << "[COMPUTER]" << endl;
  111.       MGM_REQUIRE(get(name, &prop));
  112.       printAllNameValuePairs(out, prop, "COMPUTER");
  113.       
  114.       out << endl <<
  115. "###################################################################" <<
  116. endl;
  117.     } else if(strncasecmp("Node_", name, 5) == 0){
  118.       /**********************
  119.        * Print NODE configs *
  120.        **********************/
  121.       const Properties *prop;
  122.       const char *s;
  123.       MGM_REQUIRE(get(name, &prop));
  124.       MGM_REQUIRE(prop->get("Type", &s));
  125.       out << endl << "[" << s << "]" << endl;
  126.       printAllNameValuePairs(out, prop, s);
  127.       out << endl <<
  128. "###################################################################" <<
  129. endl;
  130.     } else if(strncasecmp("Connection_", name, 11) == 0){
  131.       /****************************
  132.        * Print CONNECTION configs *
  133.        ****************************/
  134.       const Properties *prop;
  135.       const char *s;
  136.       MGM_REQUIRE(get(name, &prop));
  137.       MGM_REQUIRE(prop->get("Type", &s));
  138.       out << endl << "[" << s << "]" << endl;
  139.       printAllNameValuePairs(out, prop, s);
  140.       
  141.       out << endl <<
  142. "###################################################################" <<
  143. endl;
  144.     } else if(strncasecmp("SYSTEM", name, strlen("SYSTEM")) == 0) {
  145.       /************************
  146.        * Print SYSTEM configs *
  147.        ************************/
  148.       const Properties *prop;
  149.       MGM_REQUIRE(get(name, &prop));
  150.       out << endl << "[SYSTEM]" << endl;
  151.       printAllNameValuePairs(out, prop, "SYSTEM");
  152.       
  153.       out << endl <<
  154. "###################################################################" <<
  155. endl;
  156.     }
  157.   }
  158. #endif
  159. }