Пример #1
0
/*!
    \fn ThreadContrl::RefreshMonitors(CMonitorList &lstMonitor)
 */
void ThreadContrl::RefreshMonitors(CMonitorList &lstMonitor)
{
   if(lstMonitor.size()==1)
   {
   	puts("Enter");
      Monitor *pm=lstMonitor.front();
      ExecuteMonitor(pm);
      lstMonitor.pop_front();
      delete pm;
      
      return ;
      
   }
   CMonitorList::iterator it;
   for(it=lstMonitor.begin();it!=lstMonitor.end();it++)
   {
	Monitor *pM=*it;
	pM->m_isRefresh=true;
	while(1)
	{
 		 MonitorThread *pThread=(MonitorThread*)GetIdleThread();
		  if(pThread)
		  {
 			   pThread->ExecuteMonitor(pM);
 			   break;
		  }
 		 else
		  {
 			   ThreadEx::sleep(1000);
  			  continue;
 		 }
	}

      
   }
   
   //wait for monitor complete
   
   BOOL hasRuning;
   for(int n=0;n<300;n++)
   {
   	hasRuning=TRUE;
	for(it=lstMonitor.begin();it!=lstMonitor.end();it++)
	{
		if((*it)->GetRunning())
		{
			hasRuning=FALSE;
			break;
		}
	}
	if(hasRuning)
	  break;
	ThreadEx::sleep(1000);
    }
   
}
Пример #2
0
void testmonitor(void)
{
	putil=new Util;
	try{	


		putil->Init();
		LoadConfig lc;
		lc.LoadAll();
		CMonitorList Monitorlst;
		lc.CreateMonitors(Monitorlst);
		int count =Monitorlst.size();
		printf("%d monitor be load\n",count);
		//Monitor *pM=NULL;
		//POSITION pos=Monitorlst.GetHeadPosition();
		//POSITION pos2=NULL,pos3=NULL;
		CMonitorList::iterator it=Monitorlst.begin();

		ReturnData* prd=NULL;
		int n=0;
		while(Monitorlst.size()>0)
		{
			//	pM=Monitorlst.RemoveTail();
			Monitor*pM=Monitorlst.front();
			Monitorlst.pop_front();
			//				pM=Monitorlst.GetNext(pos);
			printf("\n------------MonitorID:%s----------------\n",pM->GetMonitorID());
			printf("MonitorID:%s\nClass:%s\nMonitorType:%d\nSEID:%s\nParentID:%s\nFrequency:%d\n", \
				(char*)pM->GetMonitorID(),(char*)pM->GetMonitorClass(),pM->GetMonitorType(),pM->GetSEID().c_str(),pM->GetParentID().c_str(), \
				pM->GetFrequency());

			puts("\n@@Parameter list@@");

			CStringList &lst=pM->GetParameterList();
			CStringList::iterator it2;
			it2=lst.begin();
			while(it2!=lst.end())
				printf("%s\n",*it2++);

			puts("\n+++ReturnList+++\n");

			CReturnDataList&rdl=pM->GetReutrnList();

			CReturnDataList::iterator it3;
			//	pos3=rdl.GetHeadPosition();
			it3=rdl.begin();
			while(it3!=rdl.end())
			{
				//prd=rdl.GetNext(pos3);
				prd=*it3++;
				printf("Label:%s\nName:%s\nUnit:%s\nType:%s\n",(char *)prd->m_Label,(char *)prd->m_Name,(char *)prd->m_Unit,(char *)prd->m_Type);
			}

			puts("\n===StateCondition===\n");

			StateCondition ** sct=pM->GetStateCondition();
			StateCondition *psct=sct[0];
			printf("Expression:%s\nStateType:%d\n",(char *)psct->m_Expression,psct->m_Type);

			CStateConditionItemList&Item=psct->GetStateConditionList();
			//pos2=Item.GetHeadPosition();
			CStateConditionItemList::iterator it4;
			it4=Item.begin();
			while(it4!=Item.end())
			{
				//					StateConditionItem *psti=Item.GetNext(pos2);
				StateConditionItem *psti=*it4++;
				printf("ItemID:%d\nOperator:%s\nName:%s\nValue:%s\n",psti->m_ItemID,(char*)psti->m_Operator,(char*)psti->m_ParamName,(char *)psti->m_ParamValue);
			}

			psct=sct[1];
			printf("Expression:%s\nStateType:%d\n",(char *)psct->m_Expression,psct->m_Type);

			CStateConditionItemList&Item2=psct->GetStateConditionList();
			//	pos2=Item2.GetHeadPosition();
			it4=Item2.begin();
			while(it4!=Item2.end())
			{
				//					StateConditionItem *psti=Item2.GetNext(pos2);
				StateConditionItem *psti=*it4++;
				printf("ItemID:%d\nOperator:%s\nName:%s\nValue:%s\n",psti->m_ItemID,(char*)psti->m_Operator,(char*)psti->m_ParamName,(char *)psti->m_ParamValue);
			}


			psct=sct[2];
			printf("Expression:%s\nStateType:%d\n",(char *)psct->m_Expression,psct->m_Type);

			CStateConditionItemList&Item3=psct->GetStateConditionList();
			//	pos2=Item3.GetHeadPosition();
			it4=Item3.begin();
			while(it4!=Item3.end())
			{
				//			StateConditionItem *psti=Item3.GetNext(pos2);
				StateConditionItem *psti=*it4++;
				printf("ItemID:%d\nOperator:%s\nName:%s\nValue:%s\n",psti->m_ItemID,(char*)psti->m_Operator,(char*)psti->m_ParamName,(char *)psti->m_ParamValue);
			}

			n++;



			delete pM;
		}

		printf("Total %d monitors\n",n);




	}
	catch(MSException &e)
	{
		printf("putil init exception:%s\n",e.Description);
		return ;
	}
}
Пример #3
0
int SerialData::Serial(FILE *pf,CMonitorList &MonitorList,Groups *pGroups,Subsequent *pSubsequent,TASKMAP &TaskMap,bool out)
{
	if(pf==NULL)
		return -2;

	STRINGMAP strmap;

	if(out)
	{
		fputs("//****SiteView ECC serial data file****\r\n",pf);
		fputs("//****Data version 7.01****\r\n",pf);
		fputs("[MonitorList_Begin]\r\n",pf);

		CMonitorList::iterator it;
		for(it=MonitorList.begin();it!=MonitorList.end();it++)
		{
			strmap.clear();
			if(!(*it)->ToTextMap(strmap))
				continue;
			fputs("[Monitor_Begin]\r\n",pf);
			SerialStringMap(strmap,pf);
			fputs("[Monitor_End]\r\n",pf);
		}
		fputs("[MonitorList_End]\r\n",pf);

		strmap.clear();
		if(!pGroups->ToTextMap(strmap))
		{
			fclose(pf);
			return -3;
		}

		fputs("[Groups_Begin]\r\n",pf);
		SerialStringMap(strmap,pf);
		fputs("[Groups_End]\r\n",pf);

		strmap.clear();
		if(!pSubsequent->ToTextMap(strmap))
		{
			fclose(pf);
			return -4;
		}

		fputs("[Subsequent_Begin]\r\n",pf);
		SerialStringMap(strmap,pf);
		fputs("[Subsequent_End]\r\n",pf);

		fputs("[TaskMap_Begin]\r\n",pf);

		TASKMAP::iterator tit;
		Task *ptask=NULL;
		while(TaskMap.findnext(tit))
		{
	    	strmap.clear();
			if((ptask=(*tit).getvalue())==NULL)
				continue;
			if(!ptask->ToTextMap(strmap))
				continue;
			fputs("[Task_Begin]\r\n",pf);
			SerialStringMap(strmap,pf);
			fputs("[Task_End]\r\n",pf);

		}

		fputs("[TaskMap_End]\r\n",pf);

		fclose(pf);


	}else
	{
		string sline;
		char line[2048]={0};
		char *pc=NULL;
		pc=fgets(line,2048,pf);
		if(pc==NULL)
			return -5;
		sline=line;
		int pos=0;
		if((pos=(int)sline.find("//"))!=0)
			return -6;
		if((pos=(int)sline.find("SiteView ECC serial data file"))<0)
			return -7;
		pc=fgets(line,2048,pf);
		if(pc==NULL)
			return -10;

		sline=line;
		if((pos=(int)sline.find("//"))!=0)
			return -8;
		if((pos=(int)sline.find("Data version 7.01"))<0)
			return -9;

		int i=0;
		bool flag=false;

		while(fgets(line,2048,pf)!=NULL)
		{
			sline=line;
			switch(i)
			{
			case	0:
				if((pos=(int)sline.find("[MonitorList_Begin]"))!=0)
				{
					continue;
				}
				else
				{
					flag=true;
					while(true)
					{
						bool mflag=false;
						strmap.clear();
						while((pc=fgets(line,2048,pf))!=NULL)
						{
							sline=line;
							if((pos=(int)sline.find("[Monitor_Begin]"))!=0)
							{
								if((pos=(int)sline.find("[MonitorList_End]"))==0)
								{
									flag=false;
									i++;
									break;
								}
								continue;
							}
							else
								break;
						}
						if(pc==NULL)
							return -11;
						if(!flag)
							break;

						while((pc=fgets(line,2048,pf))!=NULL)
						{
							sline=line;
							if((pos=(int)sline.find("[Monitor_End]"))==0)
							{
								mflag=true;
								break;
							}
							CovertStringToMap(sline,strmap);
						}
						if(pc==NULL)
							return -12;
						if(mflag)
						{
							Monitor *pm=new Monitor();
							if(Univ::seid!=1)
								pm->m_isRefresh= true;
							if(pm->FromTextMap(strmap))
								MonitorList.push_back(pm);
						}
					}
				}
				break;
			case		1:
				if((pos=(int)sline.find("[Groups_Begin]"))!=0)
				{
					continue;
				}else
				{
					strmap.clear();
					flag=false;
					while((pc=fgets(line,2048,pf))!=NULL)
					{
						sline=line;
						if((pos=(int)sline.find("[Groups_End]"))==0)
						{
							i++;
							flag=true;
							break;
						}
						CovertStringToMap(sline,strmap);
					}
					if(pc==NULL)
						return -13;
					if(flag)
						pGroups->FromTextMap(strmap);

				}
				break;
			case	2:
				if((pos=(int)sline.find("[Subsequent_Begin]"))!=0)
				{
					continue;
				}else
				{
					strmap.clear();
					flag=false;
					while((pc=fgets(line,2048,pf))!=NULL)
					{
						sline=line;
						if((pos=(int)sline.find("[Subsequent_End]"))==0)
						{
							i++;
							flag=true;
							break;
						}
						CovertStringToMap(sline,strmap);
					}
					if(pc==NULL)
						return -13;
					if(flag)
						pSubsequent->FromTextMap(strmap);
				}
				break;
			case	3:
				if((pos=(int)sline.find("[TaskMap_Begin]"))!=0)
				{
					continue;
				}else
				{
					flag=true;
					while(true)
					{
						bool mflag=false;
						strmap.clear();
						while((pc=fgets(line,2048,pf))!=NULL)
						{
							sline=line;
							if((pos=(int)sline.find("[Task_Begin]"))!=0)
							{
								if((pos=(int)sline.find("[TaskMap_End]"))==0)
								{
									flag=false;
									i++;
									break;
								}
								continue;
							}
							else
								break;
						}
						if(pc==NULL)
							return -11;
						if(!flag)
						{
							return 0;
						}

						while((pc=fgets(line,2048,pf))!=NULL)
						{
							sline=line;
							if((pos=(int)sline.find("[Task_End]"))==0)
							{
								mflag=true;
								break;
							}
							CovertStringToMap(sline,strmap);
						}
						if(pc==NULL)
							return -12;
						if(mflag)
						{
							Task *pm=new Task();
							if(pm->FromTextMap(strmap))
								TaskMap[pm->m_taskname.c_str()]=pm;
						}


					}
				}
				break;
			case	4:
				return 0;
			default :break;
			}

		}

	}

	return 0;

}