Example #1
0
 void snvTrace(LPCTSTR lpszFormat, va_list argList)
 {
       TCHAR szBuffer[DTRACE_BUF_LEN];
       if (_vsntprintf( szBuffer, DTRACE_BUF_LEN, lpszFormat, argList ) < 0) {
           szBuffer[DTRACE_BUF_LEN-1] = 0;
       }
       TCHAR szTime[32];
       CreateTimeStamp(szTime, sizeof(szTime));
       _tcscat(szTime, _T(" "));
       TCHAR szBuffer1[DTRACE_BUF_LEN];
       size_t iFormatLen = _tcslen(lpszFormat);
       BOOL bErrorReport = iFormatLen>6 && _tcscmp(lpszFormat + iFormatLen - 6, _T("[%08x]"))==0;
       size_t iTimeLen = _tcslen(szTime);
       if (_sntprintf(
           szBuffer1 + iTimeLen,
           DTRACE_BUF_LEN - iTimeLen - 1, //reserver for \n
           _T("P:%04d T:%04d ") TRACE_SUFFIX _T("%s%s"),
           ::GetCurrentProcessId(),
           ::GetCurrentThreadId(),
           bErrorReport?_T("Error:"):_T(""),
           szBuffer) < 0)
       {
           _tcscpy(szBuffer1 + DTRACE_BUF_LEN - 5, _T("...")); //reserver for \n
       }
       memcpy(szBuffer1, szTime, iTimeLen*sizeof(TCHAR));
       _tcscat(szBuffer1, _T("\n"));
       DbgOut( szBuffer1 );
 }
Example #2
0
	int64 CLinkerPipe::PushMsgToSend(CMsg& Msg,bool bUrgence){
		
		assert(Msg.IsValid());
		
		CLock lk(m_Mutex,this);
		
		ePipeline& Sender = Msg.GetSender();
		ePipeline& Receiver = Msg.GetReceiver();
        ePipeline& Letter   = Msg.GetLetter();
		
		int64 MsgID = Letter.GetID();
        assert(MsgID != 0);
        if (MsgID==0)
        {
			return 0;
        }

		int64 EventID = Msg.GetEventID();

		//把本地发送者地址用一个INT64代替
		int64 SenderID = LocalAddress2SenderID(Sender);	
		Sender.Clear();
		Sender.PushInt(SenderID);
		
		//用时间戳代替源ID,对方返回此时间戳表示正常接受
		int64 TimeStamp = CreateTimeStamp();
        Msg.SetSourceID(TimeStamp);

		ePipeline* MsgPtr = (ePipeline*)Msg.Release();
		Encrypt(MsgPtr);

		ePipeline Info;
		Info.PushInt(MsgID);
		Info.PushInt(EventID);
		Info.PushInt(TimeStamp);
		Info.PushInt(m_PendingMsgID);
		Info.PushInt(Size());
		Info.PushInt(m_UrgenceMsg.Size());
		m_Parent->NotifyLinkerState(this,LINKER_PUSH_MSG,Info);

		if (bUrgence)
		{
			m_UrgenceMsg.Push_Directly(MsgPtr);
		}else{
			Push_Directly(MsgPtr);
		}
		return MsgID;
	}; 
Example #3
0
	int64  CLinkerPipe::LocalAddress2SenderID(ePipeline& LocalAddress)
	{
		assert(LocalAddress.Size()!=0);
		
		//CLock lk(m_Mutex);
		map<int64,ePipeline>::iterator It = m_LocalAddressList.begin();
		while (It != m_LocalAddressList.end())
		{
			ePipeline& Address = It->second;
			if(IsEqualAddress(Address,LocalAddress)){
				return It->first;
			}
			It++;
		}
	
		int64 SenderID = CreateTimeStamp();
		tstring s = GetTimer()->GetFullTime(SenderID);

		ePipeline& Address = m_LocalAddressList[SenderID];
		Address<<LocalAddress;
		return SenderID;
    }
Example #4
0
int main(int argc, char* argv[])
{
	char *srcFileName = 0;
	char *dtbFileName = 0;
	char *hstFileName = 0;

	// --- read command line parameter --------------------------------------
	if (argc < 2 || argc > 4) { Help("Wong number of arguments"); return 1; }
	srcFileName = argv[1];
	if (srcFileName == 0) { Help(); return 1; }
	for (int i=2; i<argc; i++)
	{
		if (argv[i][0] != '-') Help("Wrong argument");
		switch (argv[i][1])
		{
			case 'd': dtbFileName = &(argv[i][2]); break;
			case 'h': hstFileName = &(argv[i][2]); break;
			default: Help("Wong argument opti"); return 1;
		}
	}

	CreateTimeStamp();

	// --- analyze C++ file ------------------------------------------
	FILE *f;
	functList cmdList;

	CppParser parser;
	try
	{
		parser.Open(srcFileName);
		while(true)
		{
			parser.GetRpcExport();
			parser.GetFunctionDecl();
			cmdList.push_back(parser.GetFname() + '$' + parser.GetFparam());

			printf("%s$%s\n", parser.GetFname().c_str(), parser.GetFparam().c_str());
		}
	}
	catch (CPError e)
	{
		if (e.error != CPError::END_OF_FILE) { e.What(); return 1; }
	}
	parser.Close();

	// --- create server functions
	if (dtbFileName)
	{
		f = fopen(dtbFileName, "wt");
		if (!f) { printf("ERROR: could not create DTB code file\n"); return 1; }
		GenerateServerCodeHeader(f);
		GenerateServerCode(cmdList, f);
		GenerateServerCodeTrailer(cmdList, f);
		fclose(f);
	}

	// generate host functions
	if (hstFileName)
	{
		f = fopen(hstFileName, "wt");
		if (!f) { printf("ERROR: could not create host code file\n"); return 2; }
		GenerateClientCodeHeader(cmdList, f);
		GenerateClientCode(cmdList, f);
		fclose(f);
	}

	//	system("pause");
	return 0;
}