Class CRealTimeTraceRouteSocket::
InvokeTraceDone()
Base ClassesData ItemsConstructorsDestructorsFunctionsCustom CodeGo to hierarchy chart    Prev page: GetResolversNext page: IsIDOK    Show member index
Private Function Declared in:
RealTimeTraceRouteSocket.h

'Declaration' icon -- Shortcut to top of page. Declaration

void InvokeTraceDone();

'Description' icon -- Shortcut to top of page. Description

Call the done routines

'Function Body' icon -- Shortcut to top of page. 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' icon -- Shortcut to top of page. See Also

Class Overview Class Overview  |  Public base class CPingSocket  |  Hierarchy Chart Hierarchy Chart


Get Surveyor!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.