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

MySQL数据库

开发平台:

Visual C++

  1. #include <ndb_types.h>
  2. #include <mgmapi.h>
  3. #include "mgmapi_configuration.hpp"
  4. ndb_mgm_configuration_iterator::ndb_mgm_configuration_iterator
  5. (const ndb_mgm_configuration & conf, unsigned type_of_section)
  6.   : m_config(conf.m_config)
  7. {
  8.   m_sectionNo = ~0;
  9.   m_typeOfSection = type_of_section;
  10.   first();
  11. }
  12. ndb_mgm_configuration_iterator::~ndb_mgm_configuration_iterator(){
  13.   reset();
  14. }
  15. void 
  16. ndb_mgm_configuration_iterator::reset(){
  17.   if(m_sectionNo != (Uint32)~0){
  18.     m_config.closeSection();
  19.   }
  20. }
  21. int
  22. ndb_mgm_configuration_iterator::enter(){
  23.   bool ok = m_config.openSection(m_typeOfSection, m_sectionNo);
  24.   if(ok){
  25.     return 0;
  26.   }
  27.   reset();
  28.   m_sectionNo = ~0;
  29.   return -1;
  30. }
  31. int
  32. ndb_mgm_configuration_iterator::first(){
  33.   reset();
  34.   m_sectionNo = 0;
  35.   return enter();
  36. }
  37. int
  38. ndb_mgm_configuration_iterator::next(){
  39.   reset();
  40.   m_sectionNo++;
  41.   return enter();
  42. }
  43. int
  44. ndb_mgm_configuration_iterator::valid() const {
  45.   return m_sectionNo != (Uint32)~0;
  46. }
  47. int
  48. ndb_mgm_configuration_iterator::find(int param, unsigned search){
  49.   unsigned val = search + 1;
  50.   while(get(param, &val) == 0 && val != search){
  51.     if(next() != 0)
  52.       break;
  53.   }
  54.   
  55.   if(val == search)
  56.     return 0;
  57.   
  58.   return -1;
  59. }
  60. int
  61. ndb_mgm_configuration_iterator::get(int param, unsigned * value) const {
  62.   return m_config.get(param, value) != true;
  63. }
  64. int 
  65. ndb_mgm_configuration_iterator::get(int param, 
  66.     unsigned long long * value) const{
  67.   return m_config.get(param, value) != true;
  68. }
  69. int 
  70. ndb_mgm_configuration_iterator::get(int param, const char ** value) const {
  71.   return m_config.get(param, value) != true;
  72. }
  73. /**
  74.  * Published C interface
  75.  */
  76. extern "C"
  77. ndb_mgm_configuration_iterator* 
  78. ndb_mgm_create_configuration_iterator(ndb_mgm_configuration * conf, 
  79.       unsigned type_of_section){
  80.   ndb_mgm_configuration_iterator* iter = (ndb_mgm_configuration_iterator*)
  81.     malloc(sizeof(ndb_mgm_configuration_iterator));
  82.   if(iter == 0)
  83.     return 0;
  84.   return new(iter) ndb_mgm_configuration_iterator(* conf, type_of_section);
  85. }
  86. extern "C"
  87. void ndb_mgm_destroy_iterator(ndb_mgm_configuration_iterator* iter){
  88.   if(iter != 0){
  89.     iter->~ndb_mgm_configuration_iterator();
  90.     free(iter);
  91.   }
  92. }
  93. extern "C"
  94. int 
  95. ndb_mgm_first(ndb_mgm_configuration_iterator* iter){
  96.   return iter->first();
  97. }
  98. extern "C"
  99. int 
  100. ndb_mgm_next(ndb_mgm_configuration_iterator* iter){
  101.   return iter->next();
  102. }
  103. extern "C"
  104. int 
  105. ndb_mgm_valid(const ndb_mgm_configuration_iterator* iter){
  106.   return iter->valid();
  107. }
  108. extern "C"
  109. int 
  110. ndb_mgm_get_int_parameter(const ndb_mgm_configuration_iterator* iter, 
  111.   int param, unsigned * value){
  112.   return iter->get(param, value);
  113. }
  114. extern "C"
  115. int 
  116. ndb_mgm_get_int64_parameter(const ndb_mgm_configuration_iterator* iter, 
  117.     int param, Uint64 * value){
  118.   return iter->get(param, value);
  119. }
  120. extern "C"
  121. int 
  122. ndb_mgm_get_string_parameter(const ndb_mgm_configuration_iterator* iter, 
  123.      int param, const char  ** value){
  124.   return iter->get(param, value);
  125. }
  126. extern "C"
  127. int 
  128. ndb_mgm_find(ndb_mgm_configuration_iterator* iter,
  129.      int param, unsigned search){
  130.   return iter->find(param, search);
  131. }