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

📄 gwconsole.cpp

📁 SMS gateway. SMS protocol for CHINA mobile, unicom, lingtong. Using mysql to exchange message.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
						  CDnNode *DnNode;						  DnNode = (CDnNode *) Gateway->Code_CP_Map.Find(atoi(Gateway->CP_Array[Num].ServiceCode));						  if(DnNode!=NULL)						  {							  DnNode->Num = Num;	//在下节点信息结构体数组(常驻内存)中的下标							  strcpy(DnNode->ServiceCode , Gateway->CP_Array[Num].ServiceCode);							  DnNode->NodeID = atoi(DnNode->ServiceCode);	//下节点的节点编号							  strcpy(DnNode->ServiceID , Gateway->CP_Array[Num].ServiceID);							  strcpy(DnNode->ServiceName , Gateway->CP_Array[Num].ServiceName);							  DnNode->CPID = Gateway->CP_Array[Num].CPID;							  strcpy(DnNode->NodeIp , Gateway->CP_Array[Num].NodeIp);							  strcpy(DnNode->Username , Gateway->CP_Array[Num].Username);							  strcpy(DnNode->Secret , Gateway->CP_Array[Num].Secret);							  DnNode->WantReport = Gateway->CP_Array[Num].WantReport;							  DnNode->TestTime = Gateway->CP_Array[Num].TestTime;							  DnNode->RecvQ_Size = Gateway->CP_Array[Num].RecvQ_Size;							  DnNode->SendQ_Size = Gateway->CP_Array[Num].SendQ_Size;							  DnNode->SentW_Size = Gateway->CP_Array[Num].SentW_Size;							  strcpy(DnNode->FeeType , Gateway->CP_Array[Num].FeeType);							  strcpy(DnNode->FeeCode , Gateway->CP_Array[Num].FeeCode);							  DnNode->Encoding = Gateway->CP_Array[Num].Encoding;							  DnNode->ShowLog = Gateway->CP_Array[Num].ShowLog;							  strcpy(DnNode->Seperator , Gateway->CP_Array[Num].Seperator);							  strcpy(DnNode->URL , Gateway->CP_Array[Num].URL);						  }					}					strcpy(Message,"DnNodes' information is reloaded from database!");					if(write(mysock,Message,strlen(Message))!=(int)strlen(Message))					{						 printf("SysAdmin: Connection Lost when Writing to Sock!\n");						 close(mysock);						 break;					}				}				//=====================列出在线上节点=====================				else if(strcmp(Command,"upalive")==0)				{					//memset(Message,0,sizeof(Message));					strcpy(Message,"Alive UpNodes : ");					for(int i=0; i<UPNODE_NUM; i++)					{						if(!Gateway->UpNode[i].State)							sprintf(Message,"%s%s[%d]; ",Message,Gateway->UpNode[i].NodeCode,Gateway->UpNode[i].NodeID);					}					if(write(mysock,Message,strlen(Message))!=(int)strlen(Message))					{						 printf("SysAdmin: Connection Lost when Writing to Sock!\n");						 close(mysock);						 break;					}				}				//=====================列出在线下节点=====================				else if(strcmp(Command,"dnalive")==0)				{					int AliveNum;					AliveNum = Gateway->Sock_CP_Map.GetSize();					//memset(Message,0,sizeof(Message));					sprintf(Message,"Alive DnNodes[%d] : ", AliveNum);					if(AliveNum)					{						Map_Pos Pos;						CDnNode *theDnNode;						Gateway->Sock_CP_Map.PosInit(&Pos);						while(1)						{							theDnNode=NULL;							RetCode = Gateway->Sock_CP_Map.GetNext((char **)&theDnNode, &Pos);							if(theDnNode==NULL)								break;							else							{								strcat(Message,theDnNode->ServiceCode);								strcat(Message,"; ");							}						}					}					if(write(mysock,Message,strlen(Message))!=(int)strlen(Message))					{						 printf("SysAdmin: Connection Lost when Writing to Sock!\n");						 close(mysock);						 break;					}				}				//=================检查某个节点的队列状况===================				else if(strncmp(Command,"checkQ",strlen("checkQ"))==0)				{					char NodeID[20];					int iNodeID;					strncpy(NodeID, Command+strlen("checkQ")+1, sizeof(NodeID)-1);					iNodeID = atoi(NodeID);					printf("\n Console: NodeID=%s, iNodeID=%d.\n",NodeID,iNodeID);					if(iNodeID<1000)	//假定节点编号小于1000的为上节点编号					{						int i;						for(i=0; i<UPNODE_NUM; i++)						{							if(Gateway->UpNode[i].NodeID == iNodeID)							{								sprintf(Message,"UpNode[%d]: RecvQ=[%d/%d], SendQ=[%d/%d], SentQ=[%d/%d].",\									iNodeID,Gateway->UpNode[i].RecvQ->GetLen(), Gateway->UpNode[i].RecvQ->GetMaxSize(),\									Gateway->UpNode[i].SendQ->GetLen(), Gateway->UpNode[i].SendQ->GetMaxSize(),\									Gateway->UpNode[i].SentQ.GetSize(),Gateway->UpNode[i].SentQ.GetMaxSize());								break;							}						}						if(i==UPNODE_NUM)							sprintf(Message,"The UpNode[%d] doesn't exist!",iNodeID);					}					else	//假定节点编号大于1000的为下节点编号					{						CDnNode * TheDnNode;						TheDnNode = (CDnNode *) Gateway->Code_CP_Map.Find(iNodeID);						if(TheDnNode==NULL)						{							sprintf(Message,"The DnNode[%d] doesn't exist or not online!",iNodeID);						}						else						{							sprintf(Message,"DnNode[%d]: RecvQ=[%d/%d], SendQ=[%d/%d], SentQ=[%d/%d].",\								iNodeID,TheDnNode->RecvQ->GetLen(), TheDnNode->RecvQ->GetMaxSize(),\								TheDnNode->SendQ->GetLen(), TheDnNode->SendQ->GetMaxSize(),\								TheDnNode->SentQ.GetSize(), TheDnNode->SentQ.GetMaxSize());						}					}					if(write(mysock,Message,strlen(Message))!=(int)strlen(Message))					{						 printf("SysAdmin: Connection Lost when Writing to Sock!\n");						 close(mysock);						 break;					}				}				//=================检查所有节点的队列状况===================				else if(strncmp(Command,"checkallQ",strlen("checkallQ"))==0)				{					memset(Message,0,sizeof(Message));					for(int i=0; i<UPNODE_NUM; i++)					{						sprintf(Message,"%sUpNode[%d]: RecvQ=[%d/%d], SendQ=[%d/%d], SentQ=[%d/%d].\n",\							Message, Gateway->UpNode[i].NodeID,\							Gateway->UpNode[i].RecvQ->GetLen(), Gateway->UpNode[i].RecvQ->GetMaxSize(),\							Gateway->UpNode[i].SendQ->GetLen(), Gateway->UpNode[i].SendQ->GetMaxSize(),\							Gateway->UpNode[i].SentQ.GetSize(), Gateway->UpNode[i].SentQ.GetMaxSize());						break;					}					Map_Pos Pos;					CDnNode *theDnNode;					Gateway->Code_CP_Map.PosInit(&Pos);					while(1)					{						theDnNode=NULL;						RetCode = Gateway->Code_CP_Map.GetNext((char **)&theDnNode, &Pos);						if(theDnNode==NULL)							break;						else						{							sprintf(Message,"%sDnNode[%d]: RecvQ=[%d/%d], SendQ=[%d/%d], SentQ=[%d/%d].\n",\								Message, theDnNode->NodeID,\								theDnNode->RecvQ->GetLen(),theDnNode->RecvQ->GetMaxSize(),\								theDnNode->SendQ->GetLen(),theDnNode->SendQ->GetMaxSize(),\								theDnNode->SentQ.GetSize(),theDnNode->SentQ.GetMaxSize());						}					}					if(write(mysock,Message,strlen(Message))!=(int)strlen(Message))					{						 printf("SysAdmin: Connection Lost when Writing to Sock!\n");						 close(mysock);						 break;					}				}				//======================其他监控命令======================				//查询线程池大小、查询连接池大小				//重新装载下行路由信息				//禁止某下节点连接、允许某下节点连接				//断开某上节点连接,建立某上节点的连接				else if(0)				{									}				//======================无效命令==========================				else				{					//memset(Message,0,sizeof(Message));					BadCommand++;					if(BadCommand<6)					{						strcpy(Message,"Unknown Command!");						if(write(mysock,Message,strlen(Message))!=(int)strlen(Message))						{							 printf("SysAdmin: Connection Lost when Writing to Sock!\n");							 close(mysock);							 break;						}					}					else					{						strcpy(Message,"Unknown Command beyond limit! Connection is to be closed!");						if(write(mysock,Message,strlen(Message))!=(int)strlen(Message))						{							 printf("SysAdmin: Connection Lost when Writing to Sock!\n");						}						close(mysock);						break;					}				}//else,错误命令			}//while(1),不断接收命令		}//for(;;),接收下一次管理连接	}//while(1),重新建立监听管理连接的socketConsoleEnd:	AdminSock.Close_sock();	Gateway->ConsoleThr=0;    if(Gateway->ToExit)		strcpy(sSysEvent,"LOG: Console for Gateway is ended! ");    else		strcpy(sSysEvent,"Error: Console for Gateway QUIT! ");    Gateway->WrSystemLog->WriteLog(sSysEvent,SYSTEMLOG);	return (void *)NULL; }

⌨️ 快捷键说明

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