testconfigvalues.cpp

来自「MySQL数据库开发源码 值得一看哦」· C++ 代码 · 共 123 行

CPP
123
字号
#include <ConfigValues.hpp>#include <NdbOut.hpp>#include <stdlib.h>#include <string.h>#define CF_NODES     1#define CF_LOG_PAGES 2#define CF_MEM_PAGES 3#define CF_START_TO  4#define CF_STOP_TO   5void print(Uint32 i, ConfigValues::ConstIterator & cf){  ndbout_c("---");  for(Uint32 j = 2; j<=7; j++){    switch(cf.getTypeOf(j)){    case ConfigValues::IntType:      ndbout_c("Node %d : CFG(%d) : %d", 	       i, j, cf.get(j, 999));      break;    case ConfigValues::Int64Type:      ndbout_c("Node %d : CFG(%d) : %lld (64)", 	       i, j, cf.get64(j, 999));      break;    case ConfigValues::StringType:      ndbout_c("Node %d : CFG(%d) : %s",	       i, j, cf.get(j, "<NOT FOUND>"));      break;    default:      ndbout_c("Node %d : CFG(%d) : TYPE: %d",	       i, j, cf.getTypeOf(j));    }  }}void print(Uint32 i, ConfigValues & _cf){  ConfigValues::ConstIterator cf(_cf);  print(i, cf);}voidprint(ConfigValues & _cf){  ConfigValues::ConstIterator cf(_cf);  Uint32 i = 0;  while(cf.openSection(CF_NODES, i)){    print(i, cf);    cf.closeSection();    i++;  }}inlinevoidrequire(bool b){  if(!b)    abort();}intmain(void){  {    ConfigValuesFactory cvf(10, 20);    cvf.openSection(1, 0);    cvf.put(2, 12);    cvf.put64(3, 13);    cvf.put(4, 14);    cvf.put64(5, 15);    cvf.put(6, "Keso");    cvf.put(7, "Kent");    cvf.closeSection();    cvf.openSection(1, 1);    cvf.put(2, 22);    cvf.put64(3, 23);    cvf.put(4, 24);    cvf.put64(5, 25);    cvf.put(6, "Kalle");    cvf.put(7, "Anka");    cvf.closeSection();      ndbout_c("-- print --");    print(* cvf.m_cfg);    cvf.shrink();    ndbout_c("shrink\n-- print --");    print(* cvf.m_cfg);    cvf.expand(10, 10);    ndbout_c("expand\n-- print --");    print(* cvf.m_cfg);    ndbout_c("packed size: %d", cvf.m_cfg->getPackedSize());    ConfigValues::ConstIterator iter(* cvf.m_cfg);    iter.openSection(CF_NODES, 0);    ConfigValues * cfg2 = ConfigValuesFactory::extractCurrentSection(iter);    print(99, * cfg2);      cvf.shrink();    ndbout_c("packed size: %d", cfg2->getPackedSize());    UtilBuffer buf;    Uint32 l1 = cvf.m_cfg->pack(buf);    Uint32 l2 = cvf.m_cfg->getPackedSize();    require(l1 == l2);      ConfigValuesFactory cvf2;    require(cvf2.unpack(buf));    UtilBuffer buf2;    cvf2.shrink();    Uint32 l3 = cvf2.m_cfg->pack(buf2);    require(l1 == l3);      ndbout_c("unpack\n-- print --");    print(* cvf2.m_cfg);    cfg2->~ConfigValues();;    cvf.m_cfg->~ConfigValues();    free(cfg2);    free(cvf.m_cfg);  }  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?