⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 services.cpp

📁 mysql-5.0.22.tar.gz源码包
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    Uint32 *buffer = new Uint32[size/4+1];        reply->pack(buffer);    delete reply;        const int uurows = (size + 44)/45;    char * uubuf = new char[uurows * 62+5];          const int uusz = uuencode_mem(uubuf, (char *)buffer, size);    delete[] buffer;          m_output->println("GET CONFIG %d %d %d %d %d",		      0, version, node, size, uusz);        m_output->println("begin 664 Ndb_cfg.bin");          /* XXX Need to write directly to the socket, because the uubuf is not     * NUL-terminated. This could/should probably be done in a nicer way.     */    write_socket(m_socket, MAX_WRITE_TIMEOUT, uubuf, uusz);    delete[] uubuf;          m_output->println("end");    m_output->println("");    return;  }  if(compat){    m_output->println("GET CONFIG %d %d %d %d %d",1, version, 0, 0, 0);    return;  }  if(node != 0){    bool compatible;    switch (m_mgmsrv.getNodeType(node)) {    case NDB_MGM_NODE_TYPE_NDB:      compatible = ndbCompatible_mgmt_ndb(NDB_VERSION, version);      break;    case NDB_MGM_NODE_TYPE_API:    case NDB_MGM_NODE_TYPE_MGM:      compatible = ndbCompatible_mgmt_api(NDB_VERSION, version);      break;    default:      m_output->println("get config");      m_output->println("result: unrecognignized node type");      m_output->println("");      return;    }        if (!compatible){      m_output->println("get config");      m_output->println("result: incompatible version mgmt 0x%x and node 0x%x",			NDB_VERSION, version);      m_output->println("");      return;    }  }      NdbMutex_Lock(m_mgmsrv.m_configMutex);  const ConfigValues * cfg = &conf->m_configValues->m_config;  const Uint32 size = cfg->getPackedSize();    UtilBuffer src;  cfg->pack(src);  NdbMutex_Unlock(m_mgmsrv.m_configMutex);    char *tmp_str = (char *) malloc(base64_needed_encoded_length(src.length()));  int res = base64_encode(src.get_data(), src.length(), tmp_str);    m_output->println("get config reply");  m_output->println("result: Ok");  m_output->println("Content-Length: %d", strlen(tmp_str));  m_output->println("Content-Type: ndbconfig/octet-stream");  m_output->println("Content-Transfer-Encoding: base64");  m_output->println("");  m_output->println(tmp_str);  free(tmp_str);  return;}voidMgmApiSession::getStatPort(Parser_t::Context &, 			   const class Properties &) {  m_output->println("get statport reply");  m_output->println("tcpport: %d", 0);  m_output->println("");}voidMgmApiSession::insertError(Parser<MgmApiSession>::Context &,			   Properties const &args) {  Uint32 node = 0, error = 0;  args.get("node", &node);  args.get("error", &error);  int result = m_mgmsrv.insertError(node, error);  m_output->println("insert error reply");  if(result != 0)    m_output->println("result: %s", get_error_text(result));  else    m_output->println("result: Ok");  m_output->println("");}voidMgmApiSession::setTrace(Parser<MgmApiSession>::Context &,			Properties const &args) {  Uint32 node = 0, trace = 0;  args.get("node", &node);  args.get("trace", &trace);  int result = m_mgmsrv.setTraceNo(node, trace);  m_output->println("set trace reply");  if(result != 0)    m_output->println("result: %s", get_error_text(result));  else    m_output->println("result: Ok");  m_output->println("");}voidMgmApiSession::getVersion(Parser<MgmApiSession>::Context &,			  Properties const &) {  m_output->println("version");  m_output->println("id: %d", NDB_VERSION);  m_output->println("major: %d", getMajor(NDB_VERSION));  m_output->println("minor: %d", getMinor(NDB_VERSION));  m_output->println("string: %s", NDB_VERSION_STRING);  m_output->println("");}voidMgmApiSession::startBackup(Parser<MgmApiSession>::Context &,			   Properties const &args) {  DBUG_ENTER("MgmApiSession::startBackup");  unsigned backupId;  Uint32 completed= 2;  int result;  args.get("completed", &completed);  result = m_mgmsrv.startBackup(backupId, completed);  m_output->println("start backup reply");  if(result != 0)  {    m_output->println("result: %s", get_error_text(result));  }  else{    m_output->println("result: Ok");    if (completed)      m_output->println("id: %d", backupId);  }  m_output->println("");  DBUG_VOID_RETURN;}voidMgmApiSession::abortBackup(Parser<MgmApiSession>::Context &,			   Properties const &args) {  Uint32 id = 0;  args.get("id", &id);  int result = m_mgmsrv.abortBackup(id);  m_output->println("abort backup reply");  if(result != 0)    m_output->println("result: %s", get_error_text(result));  else    m_output->println("result: Ok");  m_output->println("");}/*****************************************************************************/voidMgmApiSession::dumpState(Parser<MgmApiSession>::Context &,			 Properties const &args) {  Uint32 node;  BaseString args_str;  args.get("node", &node);  args.get("args", args_str);  int result = m_mgmsrv.dumpState(node, args_str.c_str());  m_output->println("dump state reply");  if(result != 0)    m_output->println("result: %s", get_error_text(result));  else    m_output->println("result: Ok");  m_output->println("");}voidMgmApiSession::bye(Parser<MgmApiSession>::Context &,                   Properties const &) {  m_stop = true;}voidMgmApiSession::endSession(Parser<MgmApiSession>::Context &,                          Properties const &) {  if(m_allocated_resources)    delete m_allocated_resources;  m_allocated_resources= new MgmtSrvr::Allocated_resources(m_mgmsrv);  m_output->println("end session reply");}voidMgmApiSession::setClusterLogLevel(Parser<MgmApiSession>::Context &,				  Properties const &args) {  const char *reply= "set cluster loglevel reply";  Uint32 node, level, cat;  BaseString errorString;  SetLogLevelOrd logLevel;  int result;  DBUG_ENTER("MgmApiSession::setClusterLogLevel");  args.get("node", &node);  args.get("category", &cat);  args.get("level", &level);  DBUG_PRINT("enter",("node=%d, category=%d, level=%d", node, cat, level));  /* XXX should use constants for this value */  if(level > 15) {    m_output->println(reply);    m_output->println("result: Invalid loglevel %d", level);    m_output->println("");    DBUG_VOID_RETURN;  }  LogLevel::EventCategory category=     (LogLevel::EventCategory)(cat-(int)CFG_MIN_LOGLEVEL);  m_mgmsrv.m_event_listner.lock();  if (m_mgmsrv.m_event_listner[0].m_logLevel.setLogLevel(category,level))  {    m_output->println(reply);    m_output->println("result: Invalid category %d", category);    m_output->println("");    m_mgmsrv.m_event_listner.unlock();    DBUG_VOID_RETURN;  }  m_mgmsrv.m_event_listner.unlock();  {    LogLevel ll;    ll.setLogLevel(category,level);    m_mgmsrv.m_event_listner.update_max_log_level(ll);  }  m_output->println(reply);  m_output->println("result: Ok");  m_output->println("");  DBUG_VOID_RETURN;}voidMgmApiSession::setLogLevel(Parser<MgmApiSession>::Context &,			   Properties const &args) {  Uint32 node = 0, level = 0, cat;  BaseString errorString;  SetLogLevelOrd logLevel;  int result;  logLevel.clear();  args.get("node", &node);  args.get("category", &cat);  args.get("level", &level);  /* XXX should use constants for this value */  if(level > 15) {    m_output->println("set loglevel reply");    m_output->println("result: Invalid loglevel", errorString.c_str());    m_output->println("");    return;  }  LogLevel::EventCategory category=     (LogLevel::EventCategory)(cat-(int)CFG_MIN_LOGLEVEL);  {    LogLevel ll;    ll.setLogLevel(category,level);    m_mgmsrv.m_event_listner.update_max_log_level(ll);  }  m_output->println("set loglevel reply");  m_output->println("result: Ok");  m_output->println("");}voidMgmApiSession::stopSignalLog(Parser<MgmApiSession>::Context &,			     Properties const &args) {  Uint32 node;  args.get("node", &node);  int result = m_mgmsrv.stopSignalTracing(node);  m_output->println("stop signallog");  if(result != 0)    m_output->println("result: %s", get_error_text(result));  else    m_output->println("result: Ok");  m_output->println("");}voidMgmApiSession::restart(Parser<MgmApiSession>::Context &,		       Properties const &args) {  Uint32    nostart = 0,    initialstart = 0,    abort = 0;  char *nodes_str;  Vector<NodeId> nodes;      args.get("initialstart", &initialstart);  args.get("nostart", &nostart);  args.get("abort", &abort);  args.get("node", (const char **)&nodes_str);  char *p, *last;  for((p = strtok_r(nodes_str, " ", &last));      p;      (p = strtok_r(NULL, " ", &last))) {    nodes.push_back(atoi(p));  }  int restarted = 0;  int result= m_mgmsrv.restartNodes(nodes,                                    &restarted,                                    nostart != 0,                                    initialstart != 0,                                    abort != 0);    m_output->println("restart reply");  if(result != 0){    m_output->println("result: %d-%s", result, get_error_text(result));  } else    m_output->println("result: Ok");  m_output->println("restarted: %d", restarted);  m_output->println("");}voidMgmApiSession::restartAll(Parser<MgmApiSession>::Context &, 			  Properties const &args){  Uint32 nostart = 0;  Uint32 initialstart = 0;  Uint32 abort = 0;    args.get("initialstart", &initialstart);  args.get("abort", &abort);  args.get("nostart", &nostart);    int count = 0;  int result = m_mgmsrv.restart(nostart, initialstart, abort, &count);  m_output->println("restart reply");  if(result != 0)    m_output->println("result: %s", get_error_text(result));  else    m_output->println("result: Ok");  m_output->println("restarted: %d", count);  m_output->println("");}static voidprintNodeStatus(OutputStream *output,		MgmtSrvr &mgmsrv,		enum ndb_mgm_node_type type) {  NodeId nodeId = 0;  while(mgmsrv.getNextNodeId(&nodeId, type)) {    enum ndb_mgm_node_status status;    Uint32 startPhase = 0,       version = 0,       dynamicId = 0,       nodeGroup = 0,      connectCount = 0;    bool system;    const char *address= NULL;    mgmsrv.status(nodeId, &status, &version, &startPhase,		  &system, &dynamicId, &nodeGroup, &connectCount,		  &address);    output->println("node.%d.type: %s",		      nodeId,		      ndb_mgm_get_node_type_string(type));    output->println("node.%d.status: %s",		      nodeId,		      ndb_mgm_get_node_status_string(status));    output->println("node.%d.version: %d", nodeId, version);    output->println("node.%d.startphase: %d", nodeId, startPhase);    output->println("node.%d.dynamic_id: %d", nodeId, dynamicId);    output->println("node.%d.node_group: %d", nodeId, nodeGroup);    output->println("node.%d.connect_count: %d", nodeId, connectCount);    output->println("node.%d.address: %s", nodeId, address ? address : "");  }}voidMgmApiSession::getStatus(Parser<MgmApiSession>::Context &,			 Properties const &) {  int noOfNodes = 0;  NodeId nodeId = 0;  while(m_mgmsrv.getNextNodeId(&nodeId, NDB_MGM_NODE_TYPE_NDB)){    noOfNodes++;  }  nodeId = 0;  while(m_mgmsrv.getNextNodeId(&nodeId, NDB_MGM_NODE_TYPE_API)){    noOfNodes++;  }  nodeId = 0;  while(m_mgmsrv.getNextNodeId(&nodeId, NDB_MGM_NODE_TYPE_MGM)){    noOfNodes++;  }    m_output->println("node status");  m_output->println("nodes: %d", noOfNodes);  printNodeStatus(m_output, m_mgmsrv, NDB_MGM_NODE_TYPE_NDB);  printNodeStatus(m_output, m_mgmsrv, NDB_MGM_NODE_TYPE_MGM);  printNodeStatus(m_output, m_mgmsrv, NDB_MGM_NODE_TYPE_API);  nodeId = 0;  m_output->println("");}voidMgmApiSession::getInfoClusterLog(Parser<MgmApiSession>::Context &,		    Properties const &) {  const char* names[] = { "enabled",			  "debug",			  "info",			  "warning",			  "error",			  "critical",			  "alert" };    m_output->println("clusterlog");  for(int i = 0; i < 7; i++) {    m_output->println("%s: %d",		      names[i], m_mgmsrv.isEventLogFilterEnabled(i));  }  m_output->println("");}voidMgmApiSession::stop(Parser<MgmApiSession>::Context &,		    Properties const &args) {  Uint32 abort;  char *nodes_str;  Vector<NodeId> nodes;  args.get("node", (const char **)&nodes_str);  if(nodes_str == NULL)  {    m_output->println("stop reply");    m_output->println("result: empty node list");    m_output->println("");    return;  }  args.get("abort", &abort);  char *p, *last;  for((p = strtok_r(nodes_str, " ", &last));      p;      (p = strtok_r(NULL, " ", &last))) {    nodes.push_back(atoi(p));  }  int stopped= 0;  int result= 0;  if (nodes.size())    result= m_mgmsrv.stopNodes(nodes, &stopped, abort != 0);  m_output->println("stop reply");  if(result != 0)    m_output->println("result: %s", get_error_text(result));  else    m_output->println("result: Ok");  m_output->println("stopped: %d", stopped);  m_output->println("");}voidMgmApiSession::stopAll(Parser<MgmApiSession>::Context &,			      Properties const &args) {  int stopped = 0;  Uint32 abort;  args.get("abort", &abort);  int result = m_mgmsrv.stop(&stopped, abort != 0);  m_output->println("stop reply");  if(result != 0)    m_output->println("result: %s", get_error_text(result));  else    m_output->println("result: Ok");  m_output->println("stopped: %d", stopped);  m_output->println("");}voidMgmApiSession::enterSingleUser(Parser<MgmApiSession>::Context &,			  Properties const &args) {  int stopped = 0;  Uint32 nodeId = 0;  args.get("nodeId", &nodeId);  int result = m_mgmsrv.enterSingleUser(&stopped, nodeId);  m_output->println("enter single user reply");  if(result != 0) {

⌨️ 快捷键说明

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