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

📄 commandinterpreter.cpp

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    } else if (strcasecmp(item, "INFO") == 0) {      severity = NDB_MGM_EVENT_SEVERITY_INFO;    } else if (strcasecmp(item, "DEBUG") == 0) {      severity = NDB_MGM_EVENT_SEVERITY_DEBUG;    } else if (strcasecmp(item, "OFF") == 0 ||	       strcasecmp(item, "ON") == 0) {      if (enable < 0) // only makes sense with toggle	severity = NDB_MGM_EVENT_SEVERITY_ON;    }    if (severity == NDB_MGM_ILLEGAL_EVENT_SEVERITY) {      ndbout << "Invalid severity level: " << item << endl;      DBUG_VOID_RETURN;    }    res_enable= ndb_mgm_set_clusterlog_severity_filter(m_mgmsrv, severity,						       enable, NULL);    if (res_enable < 0)    {      ndbout << "Couldn't set filter" << endl;      printError();      DBUG_VOID_RETURN;    }    ndbout << BaseString(item).ndb_toupper().c_str() << " " << (res_enable ? "enabled":"disabled") << endl;    item = strtok_r(NULL, " ", &tmpPtr);	  } while(item != NULL);  DBUG_VOID_RETURN;} //*****************************************************************************//*****************************************************************************voidCommandInterpreter::executeStop(int processId, const char *, bool all) {  int result = 0;  if(all) {    result = ndb_mgm_stop(m_mgmsrv, 0, 0);  } else {    result = ndb_mgm_stop(m_mgmsrv, 1, &processId);  }  if (result < 0) {    ndbout << "Shutdown failed." << endl;    printError();  } else    {      if(all)	ndbout << "NDB Cluster has shutdown." << endl;      else	ndbout << "Node " << processId << " has shutdown." << endl;    }}voidCommandInterpreter::executeEnterSingleUser(char* parameters) {  strtok(parameters, " ");  struct ndb_mgm_reply reply;  char* id = strtok(NULL, " ");  id = strtok(NULL, " ");  id = strtok(NULL, "\0");  int nodeId = -1;  if(id == 0 || sscanf(id, "%d", &nodeId) != 1){    ndbout_c("Invalid arguments: expected <NodeId>");    ndbout_c("Use SHOW to see what API nodes are configured");    return;  }  int result = ndb_mgm_enter_single_user(m_mgmsrv, nodeId, &reply);    if (result != 0) {    ndbout_c("Entering single user mode for node %d failed", nodeId);    printError();  } else {    ndbout_c("Single user mode entered");    ndbout_c("Access is granted for API node %d only.", nodeId);  }}void CommandInterpreter::executeExitSingleUser(char* parameters) {  int result = ndb_mgm_exit_single_user(m_mgmsrv, 0);  if (result != 0) {    ndbout_c("Exiting single user mode failed.");    printError();  } else {    ndbout_c("Exiting single user mode in progress.");    ndbout_c("Use ALL STATUS or SHOW to see when single user mode has been exited.");  }}voidCommandInterpreter::executeStart(int processId, const char* parameters,				 bool all) {  int result;  if(all) {    result = ndb_mgm_start(m_mgmsrv, 0, 0);  } else {    result = ndb_mgm_start(m_mgmsrv, 1, &processId);  }  if (result <= 0) {    ndbout << "Start failed." << endl;    printError();  } else    {      if(all)	ndbout_c("NDB Cluster is being started.");      else	ndbout_c("Database node %d is being started.", processId);    }}voidCommandInterpreter::executeRestart(int processId, const char* parameters,				   bool all) {  int result;  int nostart = 0;  int initialstart = 0;  int abort = 0;  if(parameters != 0 && strlen(parameters) != 0){    char * tmpString = my_strdup(parameters,MYF(MY_WME));    My_auto_ptr<char> ap1(tmpString);    char * tmpPtr = 0;    char * item = strtok_r(tmpString, " ", &tmpPtr);    while(item != NULL){      if(strcasecmp(item, "-N") == 0)	nostart = 1;      if(strcasecmp(item, "-I") == 0)	initialstart = 1;      if(strcasecmp(item, "-A") == 0)	abort = 1;      item = strtok_r(NULL, " ", &tmpPtr);    }  }  if(all) {    result = ndb_mgm_restart2(m_mgmsrv, 0, NULL, initialstart, nostart, abort);  } else {    int v[1];    v[0] = processId;    result = ndb_mgm_restart2(m_mgmsrv, 1, v, initialstart, nostart, abort);  }    if (result <= 0) {    ndbout.println("Restart failed.", result);    printError();  } else    {      if(all)	ndbout << "NDB Cluster is being restarted." << endl;      else	ndbout_c("Node %d is being restarted.", processId);    }}voidCommandInterpreter::executeDumpState(int processId, const char* parameters,				     bool all) {  if(emptyString(parameters)){    ndbout << "Expected argument" << endl;    return;  }  Uint32 no = 0;  int pars[25];    char * tmpString = my_strdup(parameters,MYF(MY_WME));  My_auto_ptr<char> ap1(tmpString);  char * tmpPtr = 0;  char * item = strtok_r(tmpString, " ", &tmpPtr);  while(item != NULL){    if (0x0 <= strtoll(item, NULL, 0) && strtoll(item, NULL, 0) <= 0xffffffff){      pars[no] = strtoll(item, NULL, 0);     } else {      ndbout << "Illegal value in argument to signal." << endl	     << "(Value must be between 0 and 0xffffffff.)" 	     << endl;      return;    }    no++;    item = strtok_r(NULL, " ", &tmpPtr);  }  ndbout << "Sending dump signal with data:" << endl;  for (Uint32 i=0; i<no; i++) {    ndbout.setHexFormat(1) << pars[i] << " ";    if (!(i+1 & 0x3)) ndbout << endl;  }    struct ndb_mgm_reply reply;  ndb_mgm_dump_state(m_mgmsrv, processId, pars, no, &reply);}void CommandInterpreter::executeStatus(int processId, 				  const char* parameters, bool all) {  if (! emptyString(parameters)) {    ndbout_c("No parameters expected to this command.");    return;  }  ndb_mgm_node_status status;  Uint32 startPhase, version;  bool system;    struct ndb_mgm_cluster_state *cl;  cl = ndb_mgm_get_status(m_mgmsrv);  if(cl == NULL) {    ndbout_c("Cannot get status of node %d.", processId);    printError();    return;  }  NdbAutoPtr<char> ap1((char*)cl);  int i = 0;  while((i < cl->no_of_nodes) && cl->node_states[i].node_id != processId)    i++;  if(cl->node_states[i].node_id != processId) {    ndbout << processId << ": Node not found" << endl;    return;  }  status = cl->node_states[i].node_status;  startPhase = cl->node_states[i].start_phase;  version = cl->node_states[i].version;  ndbout << "Node " << processId << ": " << status_string(status);  switch(status){  case NDB_MGM_NODE_STATUS_STARTING:    ndbout << " (Phase " << startPhase << ")";    break;  case NDB_MGM_NODE_STATUS_SHUTTING_DOWN:    ndbout << " (Phase " << startPhase << ")";    break;  default:    break;  }  if(status != NDB_MGM_NODE_STATUS_NO_CONTACT)    ndbout_c(" (Version %d.%d.%d)", 	     getMajor(version) ,	     getMinor(version),	     getBuild(version));  else    ndbout << endl;}//*****************************************************************************//*****************************************************************************void CommandInterpreter::executeLogLevel(int processId, const char* parameters, 				    bool all) {  (void) all;  if (emptyString(parameters)) {    ndbout << "Expected argument" << endl;    return;  }   BaseString tmp(parameters);  Vector<BaseString> spec;  tmp.split(spec, "=");  if(spec.size() != 2){    ndbout << "Invalid loglevel specification: " << parameters << endl;    return;  }  spec[0].trim().ndb_toupper();  int category = ndb_mgm_match_event_category(spec[0].c_str());  if(category == NDB_MGM_ILLEGAL_EVENT_CATEGORY){    category = atoi(spec[0].c_str());    if(category < NDB_MGM_MIN_EVENT_CATEGORY ||       category > NDB_MGM_MAX_EVENT_CATEGORY){      ndbout << "Unknown category: \"" << spec[0].c_str() << "\"" << endl;      return;    }  }    int level = atoi(spec[1].c_str());  if(level < 0 || level > 15){    ndbout << "Invalid level: " << spec[1].c_str() << endl;    return;  }    ndbout << "Executing LOGLEVEL on node " << processId << flush;  struct ndb_mgm_reply reply;  int result;  result = ndb_mgm_set_loglevel_node(m_mgmsrv, 				     processId,				     (ndb_mgm_event_category)category,				     level, 				     &reply);    if (result < 0) {    ndbout_c(" failed.");    printError();  } else {    ndbout_c(" OK!");  }    }//*****************************************************************************//*****************************************************************************void CommandInterpreter::executeError(int processId, 				      const char* parameters, bool /* all */) {  if (emptyString(parameters)) {    ndbout << "Missing error number." << endl;    return;  }  // Copy parameters since strtok will modify it  char* newpar = my_strdup(parameters,MYF(MY_WME));   My_auto_ptr<char> ap1(newpar);  char* firstParameter = strtok(newpar, " ");  int errorNo;  if (! convert(firstParameter, errorNo)) {    ndbout << "Expected an integer." << endl;    return;  }  char* allAfterFirstParameter = strtok(NULL, "\0");  if (! emptyString(allAfterFirstParameter)) {    ndbout << "Nothing expected after error number." << endl;    return;  }  ndb_mgm_insert_error(m_mgmsrv, processId, errorNo, NULL);}//*****************************************************************************//*****************************************************************************void CommandInterpreter::executeLog(int processId,			       const char* parameters, bool all) {  struct ndb_mgm_reply reply;  Vector<const char *> blocks;  if (! parseBlockSpecification(parameters, blocks)) {    return;  }  int len=1;  Uint32 i;  for(i=0; i<blocks.size(); i++) {    len += strlen(blocks[i]) + 1;  }  char * blockNames = (char*)my_malloc(len,MYF(MY_WME));  My_auto_ptr<char> ap1(blockNames);    blockNames[0] = 0;  for(i=0; i<blocks.size(); i++) {    strcat(blockNames, blocks[i]);    strcat(blockNames, "|");  }    int result = ndb_mgm_log_signals(m_mgmsrv,				   processId, 				   NDB_MGM_SIGNAL_LOG_MODE_INOUT, 				   blockNames,				   &reply);  if (result != 0) {    ndbout_c("Execute LOG on node %d failed.", processId);    printError();  }}//*****************************************************************************//*****************************************************************************void CommandInterpreter::executeLogIn(int /* processId */,				 const char* parameters, bool /* all */) {  ndbout << "Command LOGIN not implemented." << endl;}//*****************************************************************************//*****************************************************************************void CommandInterpreter::executeLogOut(int /*processId*/, 				  const char* parameters, bool /*all*/) {  ndbout << "Command LOGOUT not implemented." << endl;}//*****************************************************************************//*****************************************************************************void CommandInterpreter::executeLogOff(int /*processId*/,				  const char* parameters, bool /*all*/) {  ndbout << "Command LOGOFF not implemented." << endl;}//*****************************************************************************//*****************************************************************************void CommandInterpreter::executeTestOn(int processId,				  const char* parameters, bool /*all*/) {  if (! emptyString(parameters)) {    ndbout << "No parameters expected to this command." << endl;    return;  }  struct ndb_mgm_reply reply;  int result = ndb_mgm_start_signallog(m_mgmsrv, processId, &reply);  if (result != 0) {    ndbout_c("Execute TESTON failed.");    printError();  }}//*****************************************************************************//*****************************************************************************void CommandInterpreter::executeTestOff(int processId,				   const char* parameters, bool /*all*/) {  if (! emptyString(parameters)) {    ndbout << "No parameters expected to this command." << endl;    return;  }  struct ndb_mgm_reply reply;  int result = ndb_mgm_stop_signallog(m_mgmsrv, processId, &reply);  if (result != 0) {    ndbout_c("Execute TESTOFF failed.");    printError();  }}//*****************************************************************************//*****************************************************************************void CommandInterpreter::executeSet(int /*processId*/, 			       const char* parameters, bool /*all*/) {  if (emptyString(parameters)) {    ndbout << "Missing parameter name." << endl;    return;  }#if 0  // Copy parameters since strtok will modify it  char* newpar = my_strdup(parameters,MYF(MY_WME));  My_auto_ptr<char> ap1(newpar);  char* configParameterName = strtok(newpar, " ");  char* allAfterParameterName = strtok(NULL, "\0");

⌨️ 快捷键说明

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