![]() |
InvokeTraceDone() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
| Private Function |
Declared in: RealTimeTraceRouteSocket.h |
Declarationvoid InvokeTraceDone();
DescriptionCall the done routines
Function Body
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")
See Also
This web site was generated
using Surveyor V4.50.811.1. Click
here
for more information. |
Site content copyright © 2003 Komodia LTD.. See the About page for additional notices. This page last updated: 24 Feb 2003. |