![]() |
InvokeTraceDone() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Private Function |
Declared in: RealTimeTraceRouteSocket.h |
void InvokeTraceDone();
Call the done routines
try { { //Enter the CS CCriticalAutoRelease aRelease(m_pCSectionGeneral,TRUE); //We are finishing if (m_bFinishing || m_bTraceDone) return; else m_bFinishing=TRUE; } //Trace flag BOOL bTrace; { //Lock the data CCriticalAutoRelease aRelease(m_aData[mhMaxHops].pCSection.get(),TRUE); if (!m_aData[mhMaxHops].aReplyingAddress) { //We need to call user! //We are not finishing m_bFinishing=FALSE; //Exit CS aRelease.Exit(); //Fake last call FakeLastRequest(); //Exit return; } //Set the last hop if (m_ucMaxHOP!=mhMaxHops) ++m_ucMaxHOP; //Is it valid ? if (m_ucMaxHOP>mhMaxHops) { //Report it ReportError("InvokeTraceDone","Too big max hops!"); //Set it to normal m_ucMaxHOP=mhMaxHops; } //What is the hop of the target m_aData[mhMaxHops].ucTTL=m_ucMaxHOP; m_aData[mhMaxHops].bFinal=TRUE; //Do we have an IP ? if (!m_aData[mhMaxHops].aReplyingAddress) m_aData[mhMaxHops].aReplyingAddress=m_aTracedAddress; //Do we have a trace bTrace=!m_aData[mhMaxHops].sReverseDNS.empty(); CCriticalAutoRelease aRelease2(m_aData[m_ucMaxHOP].pCSection.get(),TRUE); //Save the data to the actual trace //Get the string first m_aData[m_ucMaxHOP]=m_aData[mhMaxHops]; } //Call user TraceDataForModify(&m_aData[m_ucMaxHOP],bTrace); TraceData(&m_aData[m_ucMaxHOP],bTrace); //Indicate we are done m_bTraceDone=TRUE; //We are not finishing m_bFinishing=FALSE; //Call handler TraceDone(FALSE); } ERROR_HANDLER("InvokeTraceDone")
![]() |
Site content copyright © 2003 Komodia LTD.. See the About page for additional notices. This page last updated: 24 Feb 2003. |