Example #1
0
void CMemoryView::ResetData(ePipeline& DataList){
	
	CTitle* Title = (CTitle*)m_ChildList[1];
	Title->DeleteAll();
	Title->m_ObjectCount=0;

	for (int i=0; i<DataList.Size(); i+=2)
	{
		int64 InstanceID = *(int64*)DataList.GetData(i);
		ePipeline*  InstanceItem = (ePipeline*)DataList.GetData(i+1);
		tstring InstanceName = InstanceItem->GetLabel();
		CreateDataInstance(InstanceName);

		CTextItem* DataList = (CTextItem*)Title->m_ChildList[Title->m_ObjectCount-1];
		
		for (int j=0; j<InstanceItem->Size(); j++)
		{
			ePipeline* Data = (ePipeline*)InstanceItem->GetData(j);
			
			CMemoryView::CTextItem*  DataItem = Data2Item(j,Data);

			if (DataItem==NULL)
			{
				return;
			}	

			//DataItem->m_State = SPACE_NOTOOLABR;

			DataList->PushChild(DataItem);
		}
	}
	Layout();
}
Example #2
0
File: Space.cpp Project: GMIS/GMIS
CObjectData::CObjectData(ePipeline& ObjectData){
	if (ObjectData.Size()!=4)
	{
		return;
	}
	m_ID   = ObjectData.GetID();
	m_Name = *(tstring*)ObjectData.GetData(0);
	m_Type = *(SPACETYPE*)ObjectData.GetData(1);
	m_Fingerprint = *(tstring*)ObjectData.GetData(2);
	ePipeline* Path = (ePipeline*)ObjectData.GetData(3);
	m_Address << *Path;
}
Example #3
0
void  CBrainMemory::RegisterGlobalPeople(ePipeline& PeopleData){
	tstring& Name = *(tstring*)PeopleData.GetData(0);
	_tcsupr(&Name[0]);

	CLock lk(&m_MemoryMutex);
	m_GlobalPeopleList[Name] = PeopleData;	
};
Example #4
0
	bool IsEqualAddress(ePipeline& Address1,ePipeline& Address2)
	{
		int32 n = Address1.Size();
		if (n != Address2.Size())
		{
			return FALSE;
		}
		
		for (int i=0; i<n; i++)
		{
			int64& ID1 = *(int64*)Address1.GetData(i);
			int64& ID2 = *(int64*)Address2.GetData(i);
			if (ID1 != ID2)
			{
				return FALSE;
			}
		}
		return TRUE;
}
Example #5
0
void   CSpacePortal::OnRequestUseObject(int64 SourceID,ePipeline& RequestInfo){

  int64 EventID = RequestInfo.PopInt();
  ePipeline* ObjectInfo = (ePipeline*)RequestInfo.GetData(0);
  ePipeline* ExePipe = (ePipeline*)RequestInfo.GetData(1);

  CObjectData Object(*ObjectInfo);
  
  int64  ExecuterID = Object.m_ID;

  CLinker ExecuterLinker;
  GetLinker(ExecuterID,ExecuterLinker);
  if (!ExecuterLinker.IsValid())
  {		  
	  ExePipe->GetLabel() = Format1024(_T("Error: Executer not started."));
	  ExePipe->SetID(RETURN_ERROR);
	  
	  CLinker Requester;
	  GetLinker(SourceID,Requester);
	  if (Requester.IsValid())
	  {
		  CMsg FeedbackMsg(MSG_TASK_FEEDBACK,NULL,EventID);
		  ePipeline& Letter = FeedbackMsg.GetLetter();
		  
		  Letter.PushPipe(*ExePipe);  
		  Requester().PushMsgToSend(FeedbackMsg);
	  }
	  return;
  }

  PushExecuterEvent(ExecuterID,SourceID,EventID);

  WriteLogDB(_T("Use Object Event:%I64ld"),EventID);


  CMsg NewMsg(MSG_OBJECT_RUN,NULL,EventID);
  ePipeline& NewLetter = NewMsg.GetLetter();
  NewLetter.PushPipe(*ExePipe);
  
  ExecuterLinker().PushMsgToSend(NewMsg);
  
};
Example #6
0
void    CSpacePortal::OnRequestCloseObject(int64 SourceID,ePipeline& RequestInfo){

	int64 EventID = RequestInfo.PopInt();
	ePipeline* ObjectInfo = (ePipeline*)RequestInfo.GetData(0);
	ePipeline* ExePipe = (ePipeline*)RequestInfo.GetData(1);
	
	CObjectData Object(*ObjectInfo);
		

	//If it does not start the external organs, this is considered a normal close
	int64 ExecuterID = Object.m_ID;
	CLinker ExecuterLinker;
	GetLinker(ExecuterID,ExecuterLinker);
	if (!ExecuterLinker.IsValid())
	{				
		CLinker Requester;
		GetLinker(SourceID,Requester);
		if (Requester.IsValid())
		{
			CMsg FeedbackMsg(MSG_TASK_FEEDBACK,NULL,EventID);
			ePipeline& Letter = FeedbackMsg.GetLetter();
			
			Letter.PushPipe(*ExePipe);  
			Requester().PushMsgToSend(FeedbackMsg);
		}
		return;
	}
	

	PushExecuterEvent(ExecuterID,SourceID,EventID);

	WriteLogDB(_T("Close Object Event:%I64ld"),EventID);


	CMsg NewMsg(MSG_OBJECT_CLOSE,NULL,EventID);
	ePipeline& NewLetter = NewMsg.GetLetter();

	NewLetter.PushPipe(*ExePipe);
	
    ExecuterLinker().PushMsgToSend(NewMsg);
}
Example #7
0
void  CBrainMemory::RegisterGlobalObject(ePipeline& ObjectData){
	tstring& Name = *(tstring*)ObjectData.GetData(0);
//    tstring& Fingerprint = *(tstring*)ObjectData.GetData(2);
	_tcslwr(&Name[0]);
//	_tcsupr(&Fingerprint[0]);
	
	CLock lk(&m_MemoryMutex);
	map<tstring,ePipeline>::iterator It = m_GlobalObjectList.find(Name);
	if(It!=m_GlobalObjectList.end()){
		return;
	};

	m_GlobalObjectList[Name] = ObjectData;
};
Example #8
0
void CDebugView::Reset(ePipeline& ItemList){

	DeleteAll();

	m_Toolbar.m_Owner = NULL;
    m_SpaceFocused    = NULL;

	Layout();	
	
	m_TaskTimeStamp = ItemList.GetID();
	if(ItemList.Size()==0){
		return;
	};

	ePipeline* TaskPipe = (ePipeline*)ItemList.GetData(0);
	MassItem* Task = new MassItem;
	PushChild(Task);
	Task->Init(*TaskPipe);
	Task->m_Alias = 1; //任务ID是一个64位整数,显示不方便,这里改为1
    Layout();
	return ;
};
Example #9
0
void   CSpacePortal::OnRequestStartObject(int64 SourceID,ePipeline& RequestInfo){

  int64 EventID = RequestInfo.PopInt();
  ePipeline* ObjectInfo = (ePipeline*)RequestInfo.GetData(0);
  ePipeline* ExePipe = (ePipeline*)RequestInfo.GetData(1);

  CObjectData Object(*ObjectInfo);
  
  ePipeline AddrData = Object.m_Address;
  assert(Object.m_ID != 0);

  //Checks whether the specified object addresses is valid
  SpaceAddress Address = FindChildSpace(AddrData,Object.m_Fingerprint);
  if (!Address.IsValid())
  {
	  CLinker Requester;
	  GetLinker(SourceID,Requester);
	  if (Requester.IsValid())
	  {
		CMsg FeedbackMsg(MSG_TASK_FEEDBACK,NULL,EventID);
		ePipeline& Letter = FeedbackMsg.GetLetter();
	    ExePipe->SetID(RETURN_ERROR);
		ExePipe->GetLabel() = Format1024(_T("Error: object address invalid"));
		Letter.PushPipe(*ExePipe);  
		Requester().PushMsgToSend(FeedbackMsg);
	  }
	  return;
  }

  //Need to open the corresponding DLL object in advance, in order to determine the type of executer
 
  //CSpace Space(Address.ParentID,Address.ChildID);	  

  AddrData = Object.m_Address;

  tstring FilePath = SpacePath2FileAddress(AddrData);
  tstring ObjectName = GetFileName(Object.m_Name); //不含扩展名

  FilePath += _T("\\")+ObjectName;
  FilePath += _T("\\")+Object.m_Name;

  Dll_Object TempDll(Object.m_ID,FilePath);
  if (!TempDll.IsValid())
  {
	  int32 error = ::GetLastError();

	  ExePipe->SetID(RETURN_ERROR);  
	  ExePipe->GetLabel() = Format1024(_T("Load object fail: <%s>"),FilePath.c_str());
	  CLinker Requester;
	  GetLinker(SourceID,Requester);
	  if (Requester.IsValid())
	  {
		  CMsg FeedbackMsg(MSG_TASK_FEEDBACK,NULL,EventID);
		  ePipeline& Letter = FeedbackMsg.GetLetter();

		  Letter.PushPipe(*ExePipe);  
		  Requester().PushMsgToSend(FeedbackMsg);
	  }
	  return ;
  }

  DLL_TYPE DllType = TempDll.GetDllType();
  tstring ExecuterFile;
  switch (DllType)
  {
	  case DLL_VC6:
		  {
              ExecuterFile = _T("EXE_VC6.EXE");
		  }
		  break;
	  case DLL_VC6D:
		  {
			  ExecuterFile = _T("EXE_VC6D.EXE");
		  }
		  break;
	  case DLL_VC10:
		  {
			  ExecuterFile = _T("EXE_VC10.EXE");
		  }
          break;
	  case DLL_VC10D:
		  {
			  ExecuterFile = _T("EXE_VC10D.EXE");
		  }
		  break;
	  default:
		  {
			  ExePipe->GetLabel() = Format1024(_T("Error: dll type not support:%d"),(int)DllType);
			  ExePipe->SetID(RETURN_ERROR);

			  CLinker Requester;
			  GetLinker(SourceID,Requester);
			  if (Requester.IsValid())
			  {
				  CMsg FeedbackMsg(MSG_TASK_FEEDBACK,NULL,EventID);
				  ePipeline& Letter = FeedbackMsg.GetLetter();
				  
				  
				  Letter.PushPipe(*ExePipe);  
				  Requester().PushMsgToSend(FeedbackMsg);
			  }
			  return;
		  }
  }

  //start a executer     
  int64 ExeSourceID = Object.m_ID;  //ExecuterID is equal to the external object instance ID
  

  bool ret = StartExecuter(ExeSourceID,ExecuterFile);
  if (!ret)
  {
	  ExePipe->GetLabel() = Format1024(_T("Error: Executer start fail."));
	  ExePipe->SetID(RETURN_ERROR);

	  CLinker Requester;
	  GetLinker(SourceID,Requester);
	  if (Requester.IsValid())
	  {
		  CMsg FeedbackMsg(MSG_TASK_FEEDBACK,NULL,EventID);
		  ePipeline& Letter = FeedbackMsg.GetLetter();

		  Letter.PushPipe(*ExePipe);  
		  Requester().PushMsgToSend(FeedbackMsg);
	  }
	  return;
  }
  RegisterExecuterUser(SourceID,ExeSourceID);

  CLinker ExecuterLinker;
  GetLinker(ExeSourceID,ExecuterLinker);	  
 
  //Register a start  external object event
  PushExecuterEvent(ExeSourceID,SourceID,EventID);

  WriteLogDB(_T("Start Object Event:%I64ld"),EventID);

  //send execute msg
  CMsg NewMsg(MSG_OBJECT_START,NULL,EventID);
  ePipeline& NewLetter = NewMsg.GetLetter();
  NewLetter.PushString(FilePath);
  NewLetter.PushPipe(*ExePipe);
  
  ExecuterLinker().PushMsgToSend(NewMsg);  
};
Example #10
0
void CPipeView::PrintPipe(ePipeline& Pipe,int32 TabNum/*=0*/)
{
	
	TCHAR buffer[200];
    int i;
	int size = Pipe.Length();

	int Tab=TabNum;

	for(i=0; i<Tab; i++){
		buffer[i]=_T('\t');
	}

	//限制嵌套数目
	if(Tab>90){
		throw std::exception("WARNING: Nest Pipe too much, end View");
	}

	tstring PipeLabel = Pipe.m_Label;
	_stprintf(buffer+Tab,_T("Pipe<%s>: %d Data\n"),PipeLabel.c_str(), Pipe.Size());
	m_Result.PushString(buffer);

	Tab = ++TabNum;
	for(i=0; i<Tab; i++){
		buffer[i]=_T('\t');
	}

	for(i=0; i<size; i++){
	   uint32 Type = Pipe.GetDataType(i);
	   switch(Type){
	   case TYPE_NULL:
		   {
		   _stprintf(buffer+Tab,_T("%03d NULL\n"),i);
		   m_Result.PushString(buffer);
		   }
		   break;

	   case TYPE_INT:
		   {
		   int64* value=(int64 *)Pipe.GetData(i);
           _stprintf(buffer+Tab,_T("%03d INT64: %I64ld\n"),i, *value);
           m_Result.PushString(buffer);
		   }
		   break;
	   case TYPE_FLOAT:
		   {
		   float64* value=(float64 *)Pipe.GetData(i);
           _stprintf(buffer+Tab,_T("%03d FLOAT64: %f\n"),i, *value);
           m_Result.PushString(buffer);
		   }
		   break;
	   case TYPE_STRING:
		   {
		   tstring* value=(tstring *)Pipe.GetData(i);
           _stprintf(buffer+Tab,_T("%03d STRING:"),i);
		   //MBPrintf("test1","%s",value->c_str());
		   tstring s(buffer);
		   s +=(*value);
		   s +=_T('\n');

           m_Result.PushString(s);
		   //MBPrintf("test","size=%d",Result.Size());
		   }
		   break;
	   case TYPE_PIPELINE:
		   {
		   ePipeline* value=(ePipeline *)Pipe.GetData(i);
    
		   //如果不用PipeNum++而用t++,导致t增大不能恢复,中间形成空格,之后打印的数据不可见
		   PrintPipe(*value,TabNum);
		   }      
		   break;
	   }
	}
    TabNum--;
}