services.cpp

来自「MySQL源码文件5.X系列, 可自已编译到服务器」· C++ 代码 · 共 1,723 行 · 第 1/4 页

CPP
1,723
字号
    m_output->println("");    m_mgmsrv.m_event_listner.unlock();    DBUG_VOID_RETURN;  }  m_mgmsrv.m_event_listner.unlock();  {    LogLevel tmp;    m_mgmsrv.m_event_listner.update_max_log_level(tmp);  }  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_v1(Parser<MgmApiSession>::Context &,		       Properties const &args) {  restart(args,1);}voidMgmApiSession::restart_v2(Parser<MgmApiSession>::Context &,		       Properties const &args) {  restart(args,2);}voidMgmApiSession::restart(Properties const &args, int version) {  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_stopSelf);    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);  if(version>1)    m_output->println("disconnect: %d", (m_stopSelf)?1:0);  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.restartDB(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;  mgmsrv.updateStatus();  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_v1(Parser<MgmApiSession>::Context &,                       Properties const &args) {  stop(args,1);}voidMgmApiSession::stop_v2(Parser<MgmApiSession>::Context &,                       Properties const &args) {  stop(args,2);}voidMgmApiSession::stop(Properties const &args, int version) {  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_stopSelf);  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);  if(version>1)    m_output->println("disconnect: %d", (m_stopSelf)?1:0);  m_output->println("");}voidMgmApiSession::stopAll(Parser<MgmApiSession>::Context &,                       Properties const &args) {  int stopped[2] = {0,0};  Uint32 abort;  args.get("abort", &abort);  BaseString stop;  const char* tostop= "db";  int ver=1;  if (args.get("stop", stop))  {    tostop= stop.c_str();    ver= 2;  }  int result= 0;  if(strstr(tostop,"db"))    result= m_mgmsrv.shutdownDB(&stopped[0], abort != 0);  if(!result && strstr(tostop,"mgm"))    result= m_mgmsrv.shutdownMGM(&stopped[1], abort!=0, &m_stopSelf);  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[0]+stopped[1]);  if(ver >1)    m_output->println("disconnect: %d", (m_stopSelf)?1:0);  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) {    m_output->println("result: %s", get_error_text(result));  }  else {    m_output->println("result: Ok");  }  m_output->println("");}voidMgmApiSession::exitSingleUser(Parser<MgmApiSession>::Context &,			      Properties const &args) {  int stopped = 0;  int result = m_mgmsrv.exitSingleUser(&stopped, false);  m_output->println("exit single user reply");  if(result != 0)    m_output->println("result: %s", get_error_text(result));  else    m_output->println("result: Ok");  m_output->println("");}voidMgmApiSession::startSignalLog(Parser<MgmApiSession>::Context &,			      Properties const &args) {  Uint32 node;  args.get("node", &node);  int result = m_mgmsrv.startSignalTracing(node);  m_output->println("start signallog reply");  if(result != 0)    m_output->println("result: %s", get_error_text(result));  else    m_output->println("result: Ok");  m_output->println("");}voidMgmApiSession::logSignals(Parser<MgmApiSession>::Context &,			   Properties const &args) {  Uint32 node = 0, in = 0, out = 0;  //  BaseString blocks;  BaseString blockList;  char * blockName;  args.get("node", &node);  args.get("in", &in);  args.get("out", &out);  args.get("blocks", blockList);  // fast fix - pekka  char buf[200];  BaseString::snprintf(buf, 200, "%s", blockList.c_str());  Vector<BaseString> blocks;    blockName=strtok(buf,"|");  while( blockName != NULL)    {      blocks.push_back(blockName);      blockName=strtok(NULL,"|");    }    if(in > 1 || out > 1)    return; /* Invalid arguments */    const MgmtSrvr::LogMode modes[] = {    MgmtSrvr::Off,    MgmtSrvr::Out,    MgmtSrvr::In,    MgmtSrvr::InOut,  };  MgmtSrvr::LogMode mode = modes[in<<1 | out];  int result = m_mgmsrv.setSignalLoggingMode(node, mode, blocks);  m_output->println("log signals reply");  if(result != 0)    m_output->println("result: %s", get_error_text(result));  else    m_output->println("result: Ok");  m_output->println("");}voidMgmApiSession::start(Parser<MgmApiSession>::Context &,		     Properties const &args) {  Uint32 node;  args.get("node", &node);    int result = m_mgmsrv.start(node);  m_output->println("start reply");  if(result != 0)    m_output->println("result: %s", get_error_text(result));  else    m_output->println("result: Ok");  m_output->println("");}voidMgmApiSession::startAll(Parser<MgmApiSession>::Context &,			Properties const &) {  NodeId node = 0;  int started = 0;  while(m_mgmsrv.getNextNodeId(&node, NDB_MGM_NODE_TYPE_NDB))    if(m_mgmsrv.start(node) == 0)      started++;  m_output->println("start reply");

⌨️ 快捷键说明

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