ANSC_STATUS
AnscQioEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PANSC_QUERY_INTERFACE_OBJECT    pMyObject    = (PANSC_QUERY_INTERFACE_OBJECT)hThisObject;
    PANSC_ATOM_TABLE_OBJECT         pAtoIf       = (PANSC_ATOM_TABLE_OBJECT     )pMyObject->hAtoIf;

    if ( !pAtoIf )
    {
        pAtoIf =
            (PANSC_ATOM_TABLE_OBJECT)AnscCreateAtomTable
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pAtoIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hAtoIf = (ANSC_HANDLE)pAtoIf;
        }
    }

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
BwrmPmoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus      = ANSC_STATUS_SUCCESS;
    PBWRM_PAGE_MANAGER_OBJECT       pMyObject         = (PBWRM_PAGE_MANAGER_OBJECT    )hThisObject;
    PANSC_TIMER_DESCRIPTOR_OBJECT   pCacheTimerObject = (PANSC_TIMER_DESCRIPTOR_OBJECT)pMyObject->hCacheTimerObject;
    PANSC_TDO_CLIENT_OBJECT         pCacheTimerClient = (PANSC_TDO_CLIENT_OBJECT      )pMyObject->hCacheTimerClient;

    if ( !pCacheTimerObject )
    {
        pCacheTimerObject =
            (PANSC_TIMER_DESCRIPTOR_OBJECT)AnscCreateTimerDescriptor
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pCacheTimerObject )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hCacheTimerObject = (ANSC_HANDLE)pCacheTimerObject;
        }

        pCacheTimerObject->SetTimerType((ANSC_HANDLE)pCacheTimerObject, ANSC_TIMER_TYPE_PERIODIC     );
        pCacheTimerObject->SetInterval ((ANSC_HANDLE)pCacheTimerObject, BWRM_PMO_CACHE_TIMER_INTERVAL);
    }

    if ( !pCacheTimerClient )
    {
        pCacheTimerClient = (PANSC_TDO_CLIENT_OBJECT)AnscAllocateMemory(sizeof(ANSC_TDO_CLIENT_OBJECT));

        if ( !pCacheTimerClient )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hCacheTimerClient = (ANSC_HANDLE)pCacheTimerClient;
        }

        pCacheTimerClient->hClientContext = (ANSC_HANDLE)pMyObject;
        pCacheTimerClient->Invoke         = BwrmPmoCacheTimerInvoke;

        pCacheTimerObject->SetClient((ANSC_HANDLE)pCacheTimerObject, (ANSC_HANDLE)pCacheTimerClient);
    }

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
TlsSeoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    AnscCoEnrollObjects((ANSC_HANDLE)hThisObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
HttpTroEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PHTTP_TRANS_RECORD_OBJECT       pMyObject    = (PHTTP_TRANS_RECORD_OBJECT)hThisObject;
    PHTTP_TMH_INTERFACE             pTmhClientIf = (PHTTP_TMH_INTERFACE      )pMyObject->hTmhClientIf;
    PHTTP_TMH_INTERFACE             pTmhServerIf = (PHTTP_TMH_INTERFACE      )pMyObject->hTmhServerIf;

    if ( !pTmhClientIf )
    {
        pTmhClientIf = (PHTTP_TMH_INTERFACE)AnscAllocateMemory(sizeof(HTTP_TMH_INTERFACE));

        if ( !pTmhClientIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hTmhClientIf = (ANSC_HANDLE)pTmhClientIf;
        }

        pTmhClientIf->hOwnerContext = (ANSC_HANDLE)pMyObject;
        pTmhClientIf->Size          = sizeof(HTTP_TMH_INTERFACE);
        pTmhClientIf->Notify        = HttpTroTmhClientNotify;
        pTmhClientIf->Serialize     = HttpTroTmhClientSerialize;
    }

    if ( !pTmhServerIf )
    {
        pTmhServerIf = (PHTTP_TMH_INTERFACE)AnscAllocateMemory(sizeof(HTTP_TMH_INTERFACE));

        if ( !pTmhServerIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hTmhServerIf = (ANSC_HANDLE)pTmhServerIf;
        }

        pTmhServerIf->hOwnerContext = (ANSC_HANDLE)pMyObject;
        pTmhServerIf->Size          = sizeof(HTTP_TMH_INTERFACE);
        pTmhServerIf->Notify        = HttpTroTmhServerNotify;
        pTmhServerIf->Serialize     = HttpTroTmhServerSerialize;
    }

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
CcspCwmpSoappoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus    = ANSC_STATUS_SUCCESS;
    PCCSP_CWMP_SOAP_PARSER_OBJECT        pMyObject       = (PCCSP_CWMP_SOAP_PARSER_OBJECT)hThisObject;

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
AnscDetoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PANSC_DAEMON_ENGINE_TCP_OBJECT  pMyObject    = (PANSC_DAEMON_ENGINE_TCP_OBJECT)hThisObject;

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
WebUpoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PWEB_URI_PATH_OBJECT            pMyObject    = (PWEB_URI_PATH_OBJECT)hThisObject;

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
BbhmDiageoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus        = ANSC_STATUS_SUCCESS;
    PBBHM_DIAG_EXEC_OBJECT          pMyObject           = (PBBHM_DIAG_EXEC_OBJECT       )hThisObject;

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
HttpWssoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PHTTP_WEBS_SESSION_OBJECT       pMyObject    = (PHTTP_WEBS_SESSION_OBJECT)hThisObject;

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
SlapOcoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PSLAP_OBJ_CONTAINER_OBJECT      pMyObject    = (PSLAP_OBJ_CONTAINER_OBJECT)hThisObject;

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
BwrmFmoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PBWRM_FILE_MANAGER_OBJECT       pMyObject    = (PBWRM_FILE_MANAGER_OBJECT)hThisObject;

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
Bmc2ComdoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PBMC2_COM_DOMAIN_OBJECT         pMyObject    = (PBMC2_COM_DOMAIN_OBJECT)hThisObject;

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
AnscObjectArrayCOEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PANSC_OBJECT_ARRAY_OBJECT       pMyObject    = (PANSC_OBJECT_ARRAY_OBJECT)hThisObject;

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
HttpSmpoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PHTTP_SIMPLE_MSG_PARSER         pMyObject    = (PHTTP_SIMPLE_MSG_PARSER)hThisObject;

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
HttpPsoVer2EnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PHTTP_PSO_VER2_OBJECT           pMyObject    = (PHTTP_PSO_VER2_OBJECT)hThisObject;

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
BreeSrmoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PBREE_SRM_OBJECT                pMyObject    = (PBREE_SRM_OBJECT)hThisObject;

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
AnscDsuoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PANSC_DAEMON_SERVER_UDP_OBJECT  pMyObject    = (PANSC_DAEMON_SERVER_UDP_OBJECT)hThisObject;

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
AnscSstoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                    returnStatus = ANSC_STATUS_SUCCESS;
    PANSC_SIMPLE_SYS_TIME_OBJECT   pMyObject    = (PANSC_SIMPLE_SYS_TIME_OBJECT)hThisObject;
    PANSC_STS_INTERFACE            pStsIf       = (PANSC_STS_INTERFACE)pMyObject->hStsIf;

    if ( !pStsIf )
    {
        pStsIf = (PANSC_STS_INTERFACE)AnscAllocateMemory(sizeof(ANSC_STS_INTERFACE));

        if ( !pStsIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hStsIf = (ANSC_HANDLE)pStsIf;
        }

        AnscCopyString(pStsIf->Name, ANSC_STS_INTERFACE_NAME);

        pStsIf->InterfaceId       = ANSC_STS_INTERFACE_ID;
        pStsIf->hOwnerContext     = (ANSC_HANDLE)pMyObject;
        pStsIf->Size              = sizeof(ANSC_STS_INTERFACE);

        pStsIf->GetLocalTime      = AnscSstoStsGetLocalTime;
        pStsIf->GetCurSeconds     = AnscSstoStsGetCurSeconds;
        pStsIf->AdjustClock1      = AnscSstoStsAdjustClock1;
        pStsIf->AdjustClock2      = AnscSstoStsAdjustClock2;
        pStsIf->GetTimeOffset     = AnscSstoStsGetTimeOffset;
        pStsIf->SetTimeOffset     = AnscSstoStsSetTimeOffset;

        pStsIf->SecondsToCalendar = AnscSstoStsSecondsToCalendar;
        pStsIf->CalendarToSeconds = AnscSstoStsCalendarToSeconds;
        pStsIf->SysTickToCalendar = AnscSstoStsSysTickToCalendar;
    }

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);


    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
CcspCwmpTcpcrhoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus  = ANSC_STATUS_SUCCESS;
    PCCSP_CWMP_TCPCR_HANDLER_OBJECT      pMyObject     = (PCCSP_CWMP_TCPCR_HANDLER_OBJECT    )hThisObject;
    PANSC_DSTO_WORKER_OBJECT        pDstoWorker   = (PANSC_DSTO_WORKER_OBJECT      )pMyObject->hDstoWorker;

    if ( !pDstoWorker )
    {
        pDstoWorker = (PANSC_DSTO_WORKER_OBJECT)CcspTr069PaAllocateMemory(sizeof(ANSC_DSTO_WORKER_OBJECT));

        if ( !pDstoWorker )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hDstoWorker = (ANSC_HANDLE)pDstoWorker;
        }

        pDstoWorker->hWorkerContext = (ANSC_HANDLE)pMyObject;
        pDstoWorker->Init           = CcspCwmpTcpcrhoWorkerInit;
        pDstoWorker->Unload         = CcspCwmpTcpcrhoWorkerUnload;

        pDstoWorker->Accept         = CcspCwmpTcpcrhoDstowoAccept;
        pDstoWorker->SetOut         = CcspCwmpTcpcrhoDstowoSetOut;
        pDstoWorker->Remove         = CcspCwmpTcpcrhoDstowoRemove;
        pDstoWorker->Query          = CcspCwmpTcpcrhoDstowoQuery;
        pDstoWorker->ProcessSync    = CcspCwmpTcpcrhoDstowoProcessSync;
        pDstoWorker->ProcessAsync   = CcspCwmpTcpcrhoDstowoProcessAsync;
        pDstoWorker->SendComplete   = CcspCwmpTcpcrhoDstowoSendComplete;
        pDstoWorker->Notify         = CcspCwmpTcpcrhoDstowoNotify;
    }

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
WebRooEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PWEB_RESOURCE_OWNER_OBJECT      pMyObject    = (PWEB_RESOURCE_OWNER_OBJECT)hThisObject;
    PHTTP_RCP_INTERFACE             pRcpIf       = (PHTTP_RCP_INTERFACE       )pMyObject->hRcpIf;

    if ( !pRcpIf )
    {
        pRcpIf = (PHTTP_RCP_INTERFACE)AnscAllocateMemory(sizeof(HTTP_RCP_INTERFACE));

        if ( !pRcpIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hRcpIf = (ANSC_HANDLE)pRcpIf;
        }

        pRcpIf->hOwnerContext     = (ANSC_HANDLE)pMyObject;
        pRcpIf->Size              = sizeof(HTTP_RCP_INTERFACE);

        pRcpIf->GetDocumentRoot   = WebRooRcpGetDocumentRoot;
        pRcpIf->GetPathInfo       = WebRooRcpGetPathInfo;
        pRcpIf->GetPathTranslated = WebRooRcpGetPathTranslated;
        pRcpIf->GetRemoteUser     = WebRooRcpGetRemoteUser;
        pRcpIf->GetScriptName     = WebRooRcpGetScriptName;
        pRcpIf->GetServerName     = WebRooRcpGetServerName;
        pRcpIf->GetServerPort     = WebRooRcpGetServerPort;
        pRcpIf->GetServerProtocol = WebRooRcpGetServerProtocol;
        pRcpIf->GetServerSoftware = WebRooRcpGetServerSoftware;
    }

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
StunScoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus      = ANSC_STATUS_SUCCESS;
    PSTUN_SIMPLE_CLIENT_OBJECT      pMyObject         = (PSTUN_SIMPLE_CLIENT_OBJECT    )hThisObject;
    PANSC_TIMER_DESCRIPTOR_OBJECT   pStageTimerObj    = (PANSC_TIMER_DESCRIPTOR_OBJECT )pMyObject->hStageTimerObj;
    PANSC_TDO_CLIENT_OBJECT         pStageTimerIf     = (PANSC_TDO_CLIENT_OBJECT       )pMyObject->hStageTimerIf;
    PANSC_TIMER_DESCRIPTOR_OBJECT   pRetryTimerObj    = (PANSC_TIMER_DESCRIPTOR_OBJECT )pMyObject->hRetryTimerObj;
    PANSC_TDO_CLIENT_OBJECT         pRetryTimerIf     = (PANSC_TDO_CLIENT_OBJECT       )pMyObject->hRetryTimerIf;
    PANSC_TIMER_DESCRIPTOR_OBJECT   pProbeTimerObj    = (PANSC_TIMER_DESCRIPTOR_OBJECT )pMyObject->hProbeTimerObj;
    PANSC_TDO_CLIENT_OBJECT         pProbeTimerIf     = (PANSC_TDO_CLIENT_OBJECT       )pMyObject->hProbeTimerIf;
    PANSC_SIMPLE_CLIENT_UDP_OBJECT  pSimpleClientUdp1 = (PANSC_SIMPLE_CLIENT_UDP_OBJECT)pMyObject->hSimpleClientUdp1;
    PANSC_SCUO_WORKER_OBJECT        pClientUdpWorker1 = (PANSC_SCUO_WORKER_OBJECT      )pMyObject->hClientUdpWorker1;
    PANSC_SIMPLE_CLIENT_UDP_OBJECT  pSimpleClientUdpA = (PANSC_SIMPLE_CLIENT_UDP_OBJECT)pMyObject->hSimpleClientUdpA;
    PANSC_SCUO_WORKER_OBJECT        pClientUdpWorkerA = (PANSC_SCUO_WORKER_OBJECT      )pMyObject->hClientUdpWorkerA;
    PANSC_SIMPLE_CLIENT_UDP_OBJECT  pSimpleClientUdpB = (PANSC_SIMPLE_CLIENT_UDP_OBJECT)pMyObject->hSimpleClientUdpB;
    PANSC_SCUO_WORKER_OBJECT        pClientUdpWorkerB = (PANSC_SCUO_WORKER_OBJECT      )pMyObject->hClientUdpWorkerB;

    if ( !pStageTimerObj )
    {
        pStageTimerObj =
            (PANSC_TIMER_DESCRIPTOR_OBJECT)AnscCreateTimerDescriptor
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pStageTimerObj )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hStageTimerObj = (ANSC_HANDLE)pStageTimerObj;
        }

        pStageTimerObj->SetTimerType((ANSC_HANDLE)pStageTimerObj, ANSC_TIMER_TYPE_SPORADIC     );
        pStageTimerObj->SetInterval ((ANSC_HANDLE)pStageTimerObj, STUN_SCO_STAGE_TIMER_INTERVAL);
    }

    if ( !pStageTimerIf )
    {
        pStageTimerIf = (PANSC_TDO_CLIENT_OBJECT)AnscAllocateMemory(sizeof(ANSC_TDO_CLIENT_OBJECT));

        if ( !pStageTimerIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hStageTimerIf = (ANSC_HANDLE)pStageTimerIf;
        }

        pStageTimerIf->hClientContext = (ANSC_HANDLE)pMyObject;
        pStageTimerIf->Invoke         = StunScoStageTimerInvoke;

        pStageTimerObj->SetClient((ANSC_HANDLE)pStageTimerObj, (ANSC_HANDLE)pStageTimerIf);
    }

    if ( !pRetryTimerObj )
    {
        pRetryTimerObj =
            (PANSC_TIMER_DESCRIPTOR_OBJECT)AnscCreateTimerDescriptor
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pRetryTimerObj )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hRetryTimerObj = (ANSC_HANDLE)pRetryTimerObj;
        }

        pRetryTimerObj->SetTimerType((ANSC_HANDLE)pRetryTimerObj, ANSC_TIMER_TYPE_SPORADIC        );
        pRetryTimerObj->SetInterval ((ANSC_HANDLE)pRetryTimerObj, STUN_MIN_RETRANSMISSION_INTERVAL);
    }

    if ( !pRetryTimerIf )
    {
        pRetryTimerIf = (PANSC_TDO_CLIENT_OBJECT)AnscAllocateMemory(sizeof(ANSC_TDO_CLIENT_OBJECT));

        if ( !pRetryTimerIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hRetryTimerIf = (ANSC_HANDLE)pRetryTimerIf;
        }

        pRetryTimerIf->hClientContext = (ANSC_HANDLE)pMyObject;
        pRetryTimerIf->Invoke         = StunScoRetryTimerInvoke;

        pRetryTimerObj->SetClient((ANSC_HANDLE)pRetryTimerObj, (ANSC_HANDLE)pRetryTimerIf);
    }

    if ( !pProbeTimerObj )
    {
        pProbeTimerObj =
            (PANSC_TIMER_DESCRIPTOR_OBJECT)AnscCreateTimerDescriptor
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pProbeTimerObj )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hProbeTimerObj = (ANSC_HANDLE)pProbeTimerObj;
        }

        pProbeTimerObj->SetTimerType((ANSC_HANDLE)pProbeTimerObj, ANSC_TIMER_TYPE_PERIODIC           );
        pProbeTimerObj->SetInterval ((ANSC_HANDLE)pProbeTimerObj, STUN_MIN_KEEP_ALIVE_INTERVAL * 1000);
    }

    if ( !pProbeTimerIf )
    {
        pProbeTimerIf = (PANSC_TDO_CLIENT_OBJECT)AnscAllocateMemory(sizeof(ANSC_TDO_CLIENT_OBJECT));

        if ( !pProbeTimerIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hProbeTimerIf = (ANSC_HANDLE)pProbeTimerIf;
        }

        pProbeTimerIf->hClientContext = (ANSC_HANDLE)pMyObject;
        pProbeTimerIf->Invoke         = StunScoProbeTimerInvoke;

        pProbeTimerObj->SetClient((ANSC_HANDLE)pProbeTimerObj, (ANSC_HANDLE)pProbeTimerIf);
    }

    if ( !pSimpleClientUdp1 )
    {
        pSimpleClientUdp1 =
            (PANSC_SIMPLE_CLIENT_UDP_OBJECT)AnscCreateSimpleClientUdp
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pSimpleClientUdp1 )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hSimpleClientUdp1 = (ANSC_HANDLE)pSimpleClientUdp1;
        }
    }

    if ( !pClientUdpWorker1 )
    {
        pClientUdpWorker1 = (PANSC_SCUO_WORKER_OBJECT)AnscAllocateMemory(sizeof(ANSC_SCUO_WORKER_OBJECT));

        if ( !pClientUdpWorker1 )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hClientUdpWorker1 = (ANSC_HANDLE)pClientUdpWorker1;
        }

        pClientUdpWorker1->hWorkerContext = (ANSC_HANDLE)pMyObject;
        pClientUdpWorker1->Query          = StunScoScuowo1Query;
        pClientUdpWorker1->Process        = StunScoScuowo1Process;
        pClientUdpWorker1->Notify         = StunScoScuowo1Notify;

        pSimpleClientUdp1->SetWorker
            (
                (ANSC_HANDLE)pSimpleClientUdp1,
                (ANSC_HANDLE)pClientUdpWorker1,
                sizeof(ANSC_SCUO_WORKER_OBJECT)
            );
    }

    if ( !pSimpleClientUdpA )
    {
        pSimpleClientUdpA =
            (PANSC_SIMPLE_CLIENT_UDP_OBJECT)AnscCreateSimpleClientUdp
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pSimpleClientUdpA )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hSimpleClientUdpA = (ANSC_HANDLE)pSimpleClientUdpA;
        }
    }

    if ( !pClientUdpWorkerA )
    {
        pClientUdpWorkerA = (PANSC_SCUO_WORKER_OBJECT)AnscAllocateMemory(sizeof(ANSC_SCUO_WORKER_OBJECT));

        if ( !pClientUdpWorkerA )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hClientUdpWorkerA = (ANSC_HANDLE)pClientUdpWorkerA;
        }

        pClientUdpWorkerA->hWorkerContext = (ANSC_HANDLE)pMyObject;
        pClientUdpWorkerA->Query          = StunScoScuowoAQuery;
        pClientUdpWorkerA->Process        = StunScoScuowoAProcess;
        pClientUdpWorkerA->Notify         = StunScoScuowoANotify;

        pSimpleClientUdpA->SetWorker
            (
                (ANSC_HANDLE)pSimpleClientUdpA,
                (ANSC_HANDLE)pClientUdpWorkerA,
                sizeof(ANSC_SCUO_WORKER_OBJECT)
            );
    }

    if ( !pSimpleClientUdpB )
    {
        pSimpleClientUdpB =
            (PANSC_SIMPLE_CLIENT_UDP_OBJECT)AnscCreateSimpleClientUdp
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pSimpleClientUdpB )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hSimpleClientUdpB = (ANSC_HANDLE)pSimpleClientUdpB;
        }
    }

    if ( !pClientUdpWorkerB )
    {
        pClientUdpWorkerB = (PANSC_SCUO_WORKER_OBJECT)AnscAllocateMemory(sizeof(ANSC_SCUO_WORKER_OBJECT));

        if ( !pClientUdpWorkerB )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hClientUdpWorkerB = (ANSC_HANDLE)pClientUdpWorkerB;
        }

        pClientUdpWorkerB->hWorkerContext = (ANSC_HANDLE)pMyObject;
        pClientUdpWorkerB->Query          = StunScoScuowoBQuery;
        pClientUdpWorkerB->Process        = StunScoScuowoBProcess;
        pClientUdpWorkerB->Notify         = StunScoScuowoBNotify;

        pSimpleClientUdpB->SetWorker
            (
                (ANSC_HANDLE)pSimpleClientUdpB,
                (ANSC_HANDLE)pClientUdpWorkerB,
                sizeof(ANSC_SCUO_WORKER_OBJECT)
            );
    }

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
SysIroV2EnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PSYS_IROV2_OBJECT               pMyObject    = (PSYS_IROV2_OBJECT            )hThisObject;
    PSYS_IRA_INTERFACE              pIraIf       = (PSYS_IRA_INTERFACE           )pMyObject->hIraIf;
    PSYS_IROV2_FOLDER_ENTRY         pRootFolder  = (PSYS_IROV2_FOLDER_ENTRY      )pMyObject->hRootFolder;

    if ( !pRootFolder )
    {
        pRootFolder = (PSYS_IROV2_FOLDER_ENTRY)AnscAllocateMemory(sizeof(SYS_IROV2_FOLDER_ENTRY) + _ansc_strlen("/") + 1);

        if ( !pRootFolder )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hRootFolder = (ANSC_HANDLE)pRootFolder;

            SysIroV2InitFolderEntry(pRootFolder);

            pRootFolder->FolderName[0] = '/';
            pRootFolder->FolderName[1] = '\0';
        }
    }

    if ( !pIraIf )
    {
        pIraIf = (PSYS_IRA_INTERFACE)AnscAllocateMemory(sizeof(SYS_IRA_INTERFACE));

        if ( !pIraIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hIraIf = (ANSC_HANDLE)pIraIf;
        }

        AnscCopyString(pIraIf->Name, SYS_IRA_INTERFACE_NAME);

        pIraIf->InterfaceId        = SYS_IRA_INTERFACE_ID;
        pIraIf->hOwnerContext      = (ANSC_HANDLE)pMyObject;
        pIraIf->Size               = sizeof(SYS_IRA_INTERFACE);

        pIraIf->AcqWriteAccess     = SysIroV2IraAcqWriteAccess;
        pIraIf->RelWriteAccess     = SysIroV2IraRelWriteAccess;

        pIraIf->AddSysFolder       = SysIroV2IraAddSysFolder;
        pIraIf->AddFolder          = SysIroV2IraAddFolder;
        pIraIf->AddFolder2         = SysIroV2IraAddFolder2;
        pIraIf->DelFolder          = SysIroV2IraDelFolder;
        pIraIf->DelFolder2         = SysIroV2IraDelFolder2;

        pIraIf->OpenFolder         = SysIroV2IraOpenFolder;
        pIraIf->OpenFolder2        = SysIroV2IraOpenFolder2;
        pIraIf->CloseFolder        = SysIroV2IraCloseFolder;
        pIraIf->ClearFolder        = SysIroV2IraClearFolder;

        pIraIf->GenerateFolder     = SysIroV2IraGenerateFolder;
        pIraIf->PopulateFolder     = SysIroV2IraPopulateFolder;

        pIraIf->QueryFolder        = SysIroV2IraQueryFolder;
        pIraIf->GetSubFolderCount  = SysIroV2IraGetSubFolderCount;
        pIraIf->EnumSubFolder      = SysIroV2IraEnumSubFolder;
        pIraIf->TestSubFolder      = SysIroV2IraTestSubFolder;

        pIraIf->AddRecord          = SysIroV2IraAddRecord;
        pIraIf->AddRecord2         = SysIroV2IraAddRecord2;
        pIraIf->DelRecord          = SysIroV2IraDelRecord;
        pIraIf->GetRecord          = SysIroV2IraGetRecord;
        pIraIf->SetRecord          = SysIroV2IraSetRecord;

        pIraIf->QueryRecord        = SysIroV2IraQueryRecord;
        pIraIf->GetRecordCount     = SysIroV2IraGetRecordCount;
        pIraIf->EnumRecord         = SysIroV2IraEnumRecord;
        pIraIf->TestRecord         = SysIroV2IraTestRecord;

        pIraIf->GetRfoUserContext  = SysIroV2IraGetRfoUserContext;
        pIraIf->SetRfoUserContext  = SysIroV2IraSetRfoUserContext;
        pIraIf->GetRfoUserReserved = SysIroV2IraGetRfoUserReserved;
        pIraIf->SetRfoUserReserved = SysIroV2IraSetRfoUserReserved;
        pIraIf->GetRfoFolderType   = SysIroV2IraGetRfoFolderType;
        pIraIf->SetRfoFolderType   = SysIroV2IraSetRfoFolderType;
        pIraIf->GetRfoPermission   = SysIroV2IraGetRfoPermission;
        pIraIf->SetRfoPermission   = SysIroV2IraSetRfoPermission;
        pIraIf->GetRfoRenderAttr   = SysIroV2IraGetRfoRenderAttr;
        pIraIf->SetRfoRenderAttr   = SysIroV2IraSetRfoRenderAttr;

        pIraIf->GetRroUserContext  = SysIroV2IraGetRroUserContext;
        pIraIf->SetRroUserContext  = SysIroV2IraSetRroUserContext;
        pIraIf->GetRroUserReserved = SysIroV2IraGetRroUserReserved;
        pIraIf->SetRroUserReserved = SysIroV2IraSetRroUserReserved;
        pIraIf->GetRroPermission   = SysIroV2IraGetRroPermission;
        pIraIf->SetRroPermission   = SysIroV2IraSetRroPermission;
        pIraIf->GetRroRenderAttr   = SysIroV2IraGetRroRenderAttr;
        pIraIf->SetRroRenderAttr   = SysIroV2IraSetRroRenderAttr;

        pIraIf->GetCurRecycleBin   = SysIroV2IraGetCurRecycleBin;
        pIraIf->AttachRecycleBin   = SysIroV2IraAttachRecycleBin;
        pIraIf->DetachRecycleBin   = SysIroV2IraDetachRecycleBin;

        pIraIf->SortSubFolders     = SysIroV2IraSortSubFolders;
        pIraIf->SortRecords        = SysIroV2IraSortRecords;

        pIraIf->GetSysRamIf        = SysIroV2IraGetSysRamIf;
        pIraIf->SetSysRamIf        = SysIroV2IraSetSysRamIf;
    }

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
CcspCwmpsoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus       = ANSC_STATUS_SUCCESS;
    PCCSP_CWMP_SESSION_OBJECT       pMyObject          = (PCCSP_CWMP_SESSION_OBJECT    )hThisObject;
    PANSC_TIMER_DESCRIPTOR_OBJECT   pSessionTimerObj   = (PANSC_TIMER_DESCRIPTOR_OBJECT)pMyObject->hSessionTimerObj;
    PANSC_TDO_CLIENT_OBJECT         pSessionTimerIf    = (PANSC_TDO_CLIENT_OBJECT      )pMyObject->hSessionTimerIf;
    PCCSP_CWMP_ACS_CONNECTION_OBJECT pCcspCwmpAcsConnection 
													   = (PCCSP_CWMP_ACS_CONNECTION_OBJECT)pMyObject->hCcspCwmpAcsConnection;
    PANSC_TIMER_DESCRIPTOR_OBJECT   pRetryTimerObj     = (PANSC_TIMER_DESCRIPTOR_OBJECT)pMyObject->hRetryTimerObj;
    PANSC_TDO_CLIENT_OBJECT         pRetryTimerIf      = (PANSC_TDO_CLIENT_OBJECT      )pMyObject->hRetryTimerIf;
    PANSC_TIMER_DESCRIPTOR_OBJECT   pDelayedActiveNotifTimerObj     
													   = (PANSC_TIMER_DESCRIPTOR_OBJECT)pMyObject->hDelayedActiveNotifTimerObj;
    PANSC_TDO_CLIENT_OBJECT         pDelayedActiveNotifTimerIf      
													   = (PANSC_TDO_CLIENT_OBJECT      )pMyObject->hDelayedActiveNotifTimerIf;
    PCCSP_CWMP_MCO_INTERFACE        pCcspCwmpMcoIf     = (PCCSP_CWMP_MCO_INTERFACE     )pMyObject->hCcspCwmpMcoIf;

    if ( !pSessionTimerObj )
    {
        pSessionTimerObj =
            (PANSC_TIMER_DESCRIPTOR_OBJECT)AnscCreateTimerDescriptor
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pSessionTimerObj )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hSessionTimerObj = (ANSC_HANDLE)pSessionTimerObj;
        }

        pSessionTimerObj->SetTimerType((ANSC_HANDLE)pSessionTimerObj, ANSC_TIMER_TYPE_SPORADIC         );
        pSessionTimerObj->SetInterval ((ANSC_HANDLE)pSessionTimerObj, CCSP_CWMPSO_SESSION_TIMEOUT * 1000);
        /* _ansc_strcpy(pSessionTimerObj->Name, "CcspCwmpsoSessionTimer"); */

    }

    if ( !pSessionTimerIf )
    {
        pSessionTimerIf = (PANSC_TDO_CLIENT_OBJECT)CcspTr069PaAllocateMemory(sizeof(ANSC_TDO_CLIENT_OBJECT));

        if ( !pSessionTimerIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hSessionTimerIf = (ANSC_HANDLE)pSessionTimerIf;
        }

        pSessionTimerIf->hClientContext = (ANSC_HANDLE)pMyObject;
        pSessionTimerIf->Invoke         = CcspCwmpsoSessionTimerInvoke;

        pSessionTimerObj->SetClient((ANSC_HANDLE)pSessionTimerObj, (ANSC_HANDLE)pSessionTimerIf);
    }

    if ( !pRetryTimerObj )
    {
        /* use separate timer scehduler to run retry alg, otherwise, we will observe delays of timer expiration */
        pRetryTimerObj =
            (PANSC_TIMER_DESCRIPTOR_OBJECT)AnscCreateTimerDescriptor
                (
                    (ANSC_HANDLE)NULL, /* pMyObject->hContainerContext,*/ 
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pRetryTimerObj )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hRetryTimerObj = (ANSC_HANDLE)pRetryTimerObj;
        }

        pRetryTimerObj->SetTimerType((ANSC_HANDLE)pRetryTimerObj, ANSC_TIMER_TYPE_SPORADIC         );
        pRetryTimerObj->SetInterval ((ANSC_HANDLE)pRetryTimerObj, 1000 * 1000);
        /* _ansc_strcpy(pSessionTimerObj->Name, "CcspCwmpsoSessionRetryTimer"); */

    }

    if ( !pRetryTimerIf )
    {
        pRetryTimerIf = (PANSC_TDO_CLIENT_OBJECT)CcspTr069PaAllocateMemory(sizeof(ANSC_TDO_CLIENT_OBJECT));

        if ( !pRetryTimerIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hRetryTimerIf = (ANSC_HANDLE)pRetryTimerIf;
        }

        pRetryTimerIf->hClientContext = (ANSC_HANDLE)pMyObject;
        pRetryTimerIf->Invoke         = CcspCwmpsoSessionRetryTimerInvoke;

        pRetryTimerObj->SetClient((ANSC_HANDLE)pRetryTimerObj, (ANSC_HANDLE)pRetryTimerIf);
    }

    if ( !pDelayedActiveNotifTimerObj )
    {
        /* use separate timer scehduler to run retry alg, otherwise, we will observe delays of timer expiration */
        pDelayedActiveNotifTimerObj =
            (PANSC_TIMER_DESCRIPTOR_OBJECT)AnscCreateTimerDescriptor
                (
                    (ANSC_HANDLE)NULL, /* pMyObject->hContainerContext,*/ 
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pDelayedActiveNotifTimerObj )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hDelayedActiveNotifTimerObj = (ANSC_HANDLE)pDelayedActiveNotifTimerObj;
        }

        pDelayedActiveNotifTimerObj->SetTimerType((ANSC_HANDLE)pDelayedActiveNotifTimerObj, ANSC_TIMER_TYPE_SPORADIC);
        pDelayedActiveNotifTimerObj->SetInterval ((ANSC_HANDLE)pDelayedActiveNotifTimerObj, 5000 * 1000);
    }

    if ( !pDelayedActiveNotifTimerIf )
    {
        pDelayedActiveNotifTimerIf = (PANSC_TDO_CLIENT_OBJECT)CcspTr069PaAllocateMemory(sizeof(ANSC_TDO_CLIENT_OBJECT));

        if ( !pDelayedActiveNotifTimerIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hDelayedActiveNotifTimerIf = (ANSC_HANDLE)pDelayedActiveNotifTimerIf;
        }

        pDelayedActiveNotifTimerIf->hClientContext = (ANSC_HANDLE)pMyObject;
        pDelayedActiveNotifTimerIf->Invoke         = CcspCwmpsoDelayedActiveNotifTimerInvoke;

        pDelayedActiveNotifTimerObj->SetClient((ANSC_HANDLE)pDelayedActiveNotifTimerObj, (ANSC_HANDLE)pDelayedActiveNotifTimerIf);
    }


    if ( !pCcspCwmpAcsConnection )
    {
        pCcspCwmpAcsConnection =
            (PCCSP_CWMP_ACS_CONNECTION_OBJECT)CcspCwmpCreateAcsConnection
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pCcspCwmpAcsConnection )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hCcspCwmpAcsConnection = (ANSC_HANDLE)pCcspCwmpAcsConnection;

            pCcspCwmpAcsConnection->SetCcspCwmpSession((ANSC_HANDLE)pCcspCwmpAcsConnection, (ANSC_HANDLE)pMyObject);
        }
    }

    if ( !pCcspCwmpMcoIf )
    {
        pCcspCwmpMcoIf = (PCCSP_CWMP_MCO_INTERFACE)CcspTr069PaAllocateMemory(sizeof(CCSP_CWMP_MCO_INTERFACE));

        if ( !pCcspCwmpMcoIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hCcspCwmpMcoIf = (ANSC_HANDLE)pCcspCwmpMcoIf;
        }

        AnscCopyString(pCcspCwmpMcoIf->Name, CCSP_CWMP_MCO_INTERFACE_NAME);

        pCcspCwmpMcoIf->InterfaceId            = CCSP_CWMP_MCO_INTERFACE_ID;
        pCcspCwmpMcoIf->hOwnerContext          = (ANSC_HANDLE)pMyObject;
        pCcspCwmpMcoIf->Size                   = sizeof(CCSP_CWMP_MCO_INTERFACE);

        pCcspCwmpMcoIf->NotifyAcsStatus        = CcspCwmpsoMcoNotifyAcsStatus;
        pCcspCwmpMcoIf->GetNextMethod          = CcspCwmpsoMcoGetNextMethod;
        pCcspCwmpMcoIf->ProcessSoapResponse    = CcspCwmpsoMcoProcessSoapResponse;
        pCcspCwmpMcoIf->ProcessSoapError       = CcspCwmpsoMcoProcessSoapError;
        pCcspCwmpMcoIf->InvokeUnknownMethod    = CcspCwmpsoMcoInvokeUnknownMethod;

        pCcspCwmpMcoIf->GetRpcMethods          = CcspCwmpsoMcoGetRpcMethods;
        pCcspCwmpMcoIf->SetParameterValues     = CcspCwmpsoMcoSetParameterValues;
        pCcspCwmpMcoIf->GetParameterValues     = CcspCwmpsoMcoGetParameterValues;
        pCcspCwmpMcoIf->GetParameterNames      = CcspCwmpsoMcoGetParameterNames;
        pCcspCwmpMcoIf->SetParameterAttributes = CcspCwmpsoMcoSetParameterAttributes;
        pCcspCwmpMcoIf->GetParameterAttributes = CcspCwmpsoMcoGetParameterAttributes;
        pCcspCwmpMcoIf->AddObject              = CcspCwmpsoMcoAddObject;
        pCcspCwmpMcoIf->DeleteObject           = CcspCwmpsoMcoDeleteObject;
        pCcspCwmpMcoIf->Download               = CcspCwmpsoMcoDownload;
        pCcspCwmpMcoIf->Reboot                 = CcspCwmpsoMcoReboot;

        pCcspCwmpMcoIf->GetQueuedTransfers     = CcspCwmpsoMcoGetQueuedTransfers;
        pCcspCwmpMcoIf->ScheduleInform         = CcspCwmpsoMcoScheduleInform;
        pCcspCwmpMcoIf->SetVouchers            = CcspCwmpsoMcoSetVouchers;
        pCcspCwmpMcoIf->GetOptions             = CcspCwmpsoMcoGetOptions;
        pCcspCwmpMcoIf->Upload                 = CcspCwmpsoMcoUpload;
        pCcspCwmpMcoIf->FactoryReset           = CcspCwmpsoMcoFactoryReset;
        pCcspCwmpMcoIf->ChangeDUState          = CcspCwmpsoMcoChangeDUState;

        pCcspCwmpMcoIf->GetParamDataType       = CcspCwmpsoMcoGetParamDataType;
    }

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
CcspCwmpAcscoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus    = ANSC_STATUS_SUCCESS;
    PCCSP_CWMP_ACS_CONNECTION_OBJECT     pMyObject       = (PCCSP_CWMP_ACS_CONNECTION_OBJECT)hThisObject;
    PHTTP_BSP_INTERFACE             pHttpBspIf      = (PHTTP_BSP_INTERFACE    )pMyObject->hHttpBspIf;
    PHTTP_ACM_INTERFACE             pHttpAcmIf      = (PHTTP_ACM_INTERFACE    )pMyObject->hHttpAcmIf;
    PHTTP_SIMPLE_CLIENT_OBJECT      pHttpClient     = (PHTTP_SIMPLE_CLIENT_OBJECT)NULL;
    PHTTP_HFP_INTERFACE             pHttpHfpIf      = (PHTTP_HFP_INTERFACE)NULL;

    if ( !pHttpBspIf )
    {
        pHttpBspIf = (PHTTP_BSP_INTERFACE)CcspTr069PaAllocateMemory(sizeof(HTTP_BSP_INTERFACE));

        if ( !pHttpBspIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hHttpBspIf = (ANSC_HANDLE)pHttpBspIf;
        }

        AnscCopyString(pHttpBspIf->Name, HTTP_BSP_INTERFACE_NAME);

        pHttpBspIf->InterfaceId   = HTTP_BSP_INTERFACE_ID;
        pHttpBspIf->hOwnerContext = (ANSC_HANDLE)pMyObject;
        pHttpBspIf->Size          = sizeof(HTTP_BSP_INTERFACE);

        pHttpBspIf->Polish        = CcspCwmpAcscoHttpBspPolish;
        pHttpBspIf->Browse        = CcspCwmpAcscoHttpBspBrowse;
        pHttpBspIf->Notify        = CcspCwmpAcscoHttpBspNotify;
    }

    if ( !pHttpAcmIf )
    {
        pHttpAcmIf = (PHTTP_ACM_INTERFACE)CcspTr069PaAllocateMemory(sizeof(HTTP_ACM_INTERFACE));

        if ( !pHttpAcmIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hHttpAcmIf = (ANSC_HANDLE)pHttpAcmIf;
        }

        pHttpAcmIf->hOwnerContext = (ANSC_HANDLE)pMyObject;
        pHttpAcmIf->Size          = sizeof(HTTP_ACM_INTERFACE);

        pHttpAcmIf->GetCredential = CcspCwmpAcscoHttpGetCredential;
    }

    /*
     *  Create Http Simple Client
     */
    pHttpClient =
        (PHTTP_SIMPLE_CLIENT_OBJECT)HttpCreateSimpleClient
            (
                (ANSC_HANDLE)pMyObject->hHttpHelpContainer,
                (ANSC_HANDLE)pMyObject,
                (ANSC_HANDLE)NULL
            );


    if( pHttpClient == NULL)
    {
        return ANSC_STATUS_RESOURCES;
    }

    pHttpClient->SetProductName(pHttpClient, "HTTP Client V1.0");
    pHttpClient->SetBspIf((ANSC_HANDLE)pHttpClient, pMyObject->hHttpBspIf);
    pHttpClient->SetClientMode(pHttpClient, HTTP_SCO_MODE_XSOCKET | HTTP_SCO_MODE_COMPACT | HTTP_SCO_MODE_NOTIFY_ON_ALL_CONN_ONCE);

    pMyObject->hHttpSimpleClient = (ANSC_HANDLE)pHttpClient;

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
BbhmDiagnsEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus        = ANSC_STATUS_SUCCESS;
    PBBHM_DIAG_NS_LOOKUP_OBJECT     pMyObject           = (PBBHM_DIAG_NS_LOOKUP_OBJECT  )hThisObject;
    PDSLH_NSLOOKUP_INFO             pDslhDiagInfo       = (PDSLH_NSLOOKUP_INFO          )NULL;
    PBBHM_NS_LOOKUP_TDO_OBJECT      pStateTimer         = (PBBHM_NS_LOOKUP_TDO_OBJECT   )pMyObject->hStateTimer;
    PANSC_OBJECT_CONTAINER_OBJECT   pContainer          = (PANSC_OBJECT_CONTAINER_OBJECT)pMyObject->hContainerContext;

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);
    pDslhDiagInfo = AnscAllocateMemory(sizeof(DSLH_NSLOOKUP_INFO));

    if ( !pDslhDiagInfo )
    {
        return ANSC_STATUS_RESOURCES;
    }
    else
    {
        DslhInitNSLookupInfo(pDslhDiagInfo);

        pMyObject->hDslhDiagInfo    = pDslhDiagInfo;
    }

    if ( !pMyObject->hSendBuffer )
    {
        pMyObject->hSendBuffer = (PCHAR)AnscAllocateMemory(BBHM_NS_LOOKUP_DEF_PACKET_SIZE);

        if ( !pMyObject->hSendBuffer )
        {
            return  ANSC_STATUS_RESOURCES;
        }
    }

    if ( !pStateTimer )
    {
        pStateTimer =
            (PBBHM_NS_LOOKUP_TDO_OBJECT)BbhmDiagnsTdoCreate
                (
                    (ANSC_HANDLE)pContainer,
                    (ANSC_HANDLE)pMyObject,
                    NULL
                );

        if ( !pStateTimer )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hStateTimer = (ANSC_HANDLE)pStateTimer;
        }

        pStateTimer->SetTimerType((ANSC_HANDLE)pStateTimer, ANSC_TIMER_TYPE_SPORADIC                        );
        pStateTimer->SetInterval ((ANSC_HANDLE)pStateTimer, BBHM_NS_LOOKUP_DEF_TIME_BETWEEN_IN_MILLISECONDS );
        pStateTimer->SetCounter  ((ANSC_HANDLE)pStateTimer, BBHM_NS_LOOKUP_DEF_NUMBER_PACKETS               );
    }

    BbhmDiageoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
TlsSmoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    PTLS_SESSION_MANAGER_OBJECT     pMyObject    = (PTLS_SESSION_MANAGER_OBJECT  )hThisObject;
    PANSC_TIMER_DESCRIPTOR_OBJECT   pPatrolTimer = (PANSC_TIMER_DESCRIPTOR_OBJECT)pMyObject->hPatrolTimer;
    PANSC_TDO_CLIENT_OBJECT         pTimerClient = (PANSC_TDO_CLIENT_OBJECT      )pMyObject->hTimerClient;
    PTLS_HSM_INTERFACE              pTlsHsmIf    = (PTLS_HSM_INTERFACE           )pMyObject->hTlsHsmIf;

    if ( !pPatrolTimer )
    {
        pPatrolTimer =
            (PANSC_TIMER_DESCRIPTOR_OBJECT)AnscCreateTimerDescriptor
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pPatrolTimer )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hPatrolTimer = (ANSC_HANDLE)pPatrolTimer;
        }

        pPatrolTimer->SetTimerType((ANSC_HANDLE)pPatrolTimer, ANSC_TIMER_TYPE_PERIODIC     );
        pPatrolTimer->SetInterval ((ANSC_HANDLE)pPatrolTimer, TLS_SMO_PATROL_TIMER_INTERVAL);
    }

    if ( !pTimerClient )
    {
        pTimerClient = (PANSC_TDO_CLIENT_OBJECT)AnscAllocateMemory(sizeof(ANSC_TDO_CLIENT_OBJECT));

        if ( !pTimerClient )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hTimerClient = (ANSC_HANDLE)pTimerClient;
        }

        pTimerClient->hClientContext = (ANSC_HANDLE)pMyObject;
        pTimerClient->Invoke         = TlsSmoPatrolTimerInvoke;

        pPatrolTimer->SetClient((ANSC_HANDLE)pPatrolTimer, (ANSC_HANDLE)pTimerClient);
    }

    if ( !pTlsHsmIf )
    {
        pTlsHsmIf = (PTLS_HSM_INTERFACE)AnscAllocateMemory(sizeof(TLS_HSM_INTERFACE));

        if ( !pTlsHsmIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hTlsHsmIf = (ANSC_HANDLE)pTlsHsmIf;
        }

        AnscCopyString(pTlsHsmIf->Name, TLS_HSM_INTERFACE_NAME);

        pTlsHsmIf->InterfaceId             = TLS_HSM_INTERFACE_ID;
        pTlsHsmIf->hOwnerContext           = (ANSC_HANDLE)pMyObject;
        pTlsHsmIf->Size                    = sizeof(TLS_HSM_INTERFACE);

        pTlsHsmIf->SelHandshakeSession     = TlsSmoHsmSelHandshakeSession;
        pTlsHsmIf->GetHandshakeSession     = TlsSmoHsmGetHandshakeSession;
        pTlsHsmIf->AddHandshakeSession     = TlsSmoHsmAddHandshakeSession;
        pTlsHsmIf->DelHandshakeSession     = TlsSmoHsmDelHandshakeSession;
        pTlsHsmIf->DelAllHandshakeSessions = TlsSmoHsmDelAllHandshakeSessions;
    }

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
SlapAmoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus       = ANSC_STATUS_SUCCESS;
    PSLAP_ACCESS_MANAGER_OBJECT     pMyObject          = (PSLAP_ACCESS_MANAGER_OBJECT)hThisObject;
    PSLAP_GOA_INTERFACE             pSlapGoaIf         = (PSLAP_GOA_INTERFACE        )pMyObject->hSlapGoaIf;
    PSLAP_POA_INTERFACE             pSlapPoaIf         = (PSLAP_POA_INTERFACE        )pMyObject->hSlapPoaIf;
    PSLAP_ENV_CONTROLLER_OBJECT     pSlapEnvController = (PSLAP_ENV_CONTROLLER_OBJECT)pMyObject->hSlapEnvController;

    if ( !pSlapGoaIf )
    {
        pSlapGoaIf = (PSLAP_GOA_INTERFACE)AnscAllocateMemory(sizeof(SLAP_GOA_INTERFACE));

        if ( !pSlapGoaIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hSlapGoaIf = (ANSC_HANDLE)pSlapGoaIf;
        }

        AnscCopyString(pSlapGoaIf->Name, SLAP_GOA_INTERFACE_NAME);

        pSlapGoaIf->InterfaceId         = SLAP_GOA_INTERFACE_ID;
        pSlapGoaIf->hOwnerContext       = (ANSC_HANDLE)pMyObject;
        pSlapGoaIf->Size                = sizeof(SLAP_GOA_INTERFACE);

        pSlapGoaIf->GetAggregationMode  = SlapAmoGoaGetAggregationMode;
        pSlapGoaIf->SetAggregationMode  = SlapAmoGoaSetAggregationMode;
        pSlapGoaIf->GetLpcPartyPort     = SlapAmoGoaGetLpcPartyPort;
        pSlapGoaIf->SetLpcPartyPort     = SlapAmoGoaSetLpcPartyPort;
        pSlapGoaIf->GetLpcPartyAddr     = SlapAmoGoaSetLpcPartyAddr;
        pSlapGoaIf->SetLpcPartyAddr     = SlapAmoGoaSetLpcPartyAddr;
        pSlapGoaIf->GetLpcManagerAddr   = SlapAmoGoaSetLpcManagerAddr;
        pSlapGoaIf->SetLpcManagerAddr   = SlapAmoGoaSetLpcManagerAddr;

        pSlapGoaIf->CreateContainer     = SlapAmoGoaCreateContainer;
        pSlapGoaIf->DeleteContainer     = SlapAmoGoaDeleteContainer;

        pSlapGoaIf->CreateObject        = SlapAmoGoaCreateObject;
        pSlapGoaIf->DeleteObject        = SlapAmoGoaDeleteObject;
        pSlapGoaIf->InvokeObject        = SlapAmoGoaInvokeObject;
        pSlapGoaIf->InvokeObject2       = SlapAmoGoaInvokeObject2;
        pSlapGoaIf->AttachObject        = SlapAmoGoaAttachObject;
        pSlapGoaIf->DetachObject        = SlapAmoGoaDetachObject;
        pSlapGoaIf->UnlinkObject        = SlapAmoGoaUnlinkObject;
        pSlapGoaIf->AcqObjectAccess     = SlapAmoGoaAcqObjectAccess;
        pSlapGoaIf->RelObjectAccess     = SlapAmoGoaRelObjectAccess;
        pSlapGoaIf->FlushAllObjects     = SlapAmoGoaFlushAllObjects;

        pSlapGoaIf->EnrollObjDescriptor = SlapAmoGoaEnrollObjDescriptor;
        pSlapGoaIf->UnbindObjDescriptor = SlapAmoGoaUnbindObjDescriptor;
        pSlapGoaIf->VerifyObjDescriptor = SlapAmoGoaVerifyObjDescriptor;

        pSlapGoaIf->EnrollMobileObject  = SlapAmoGoaEnrollMobileObject;
        pSlapGoaIf->UnbindMobileObject  = SlapAmoGoaUnbindMobileObject;
        pSlapGoaIf->VerifyMobileObject  = SlapAmoGoaVerifyMobileObject;
    }

    if ( !pSlapPoaIf )
    {
        pSlapPoaIf = (PSLAP_POA_INTERFACE)AnscAllocateMemory(sizeof(SLAP_POA_INTERFACE));

        if ( !pSlapPoaIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hSlapPoaIf = (ANSC_HANDLE)pSlapPoaIf;
        }

        AnscCopyString(pSlapPoaIf->Name, SLAP_POA_INTERFACE_NAME);

        pSlapPoaIf->InterfaceId       = SLAP_POA_INTERFACE_ID;
        pSlapPoaIf->hOwnerContext     = (ANSC_HANDLE)pMyObject;
        pSlapPoaIf->Size              = sizeof(SLAP_POA_INTERFACE);

        pSlapPoaIf->AcqObjectAccess   = SlapAmoPoaAcqObjectAccess;
        pSlapPoaIf->RelObjectAccess   = SlapAmoPoaRelObjectAccess;

        pSlapPoaIf->CreateProxyObject = SlapAmoPoaCreateProxyObject;
        pSlapPoaIf->EnrollProxyObject = SlapAmoPoaEnrollProxyObject;
        pSlapPoaIf->UnbindProxyObject = SlapAmoPoaUnbindProxyObject;
        pSlapPoaIf->VerifyProxyObject = SlapAmoPoaVerifyProxyObject;
    }

    if ( !pSlapEnvController )
    {
        pSlapEnvController =
            (PSLAP_ENV_CONTROLLER_OBJECT)SlapCreateEnvController
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pSlapEnvController )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hSlapEnvController = (ANSC_HANDLE)pSlapEnvController;
        }
    }

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
TlsEcoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    PTLS_ENV_CONTROLLER_OBJECT      pMyObject          = (PTLS_ENV_CONTROLLER_OBJECT )hThisObject;
    PTLS_SESSION_MANAGER_OBJECT     pTlsSessionManager = (PTLS_SESSION_MANAGER_OBJECT)pMyObject->hTlsSessionManager;
    PTLS_CRYPTO_PROVIDER_OBJECT     pTlsCryptoProvider = (PTLS_CRYPTO_PROVIDER_OBJECT)pMyObject->hTlsCryptoProvider;
    PTLS_SCS_INTERFACE              pTlsScsIf          = (PTLS_SCS_INTERFACE         )pMyObject->hTlsScsIf;
    PTLS_MEC_INTERFACE              pTlsMecIf          = (PTLS_MEC_INTERFACE         )pMyObject->hTlsMecIf;

    if ( !pTlsSessionManager )
    {
        pTlsSessionManager =
            (PTLS_SESSION_MANAGER_OBJECT)TlsCreateSessionManager
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pTlsSessionManager )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hTlsSessionManager = (ANSC_HANDLE)pTlsSessionManager;
        }
    }

    if ( !pTlsCryptoProvider )
    {
        pTlsCryptoProvider =
            (PTLS_CRYPTO_PROVIDER_OBJECT)TlsCreateCryptoProvider
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pTlsCryptoProvider )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hTlsCryptoProvider = (ANSC_HANDLE)pTlsCryptoProvider;
        }
    }

    if ( !pTlsScsIf )
    {
        pTlsScsIf = (PTLS_SCS_INTERFACE)AnscAllocateMemory(sizeof(TLS_SCS_INTERFACE));

        if ( !pTlsScsIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hTlsScsIf = (ANSC_HANDLE)pTlsScsIf;
        }

        AnscCopyString(pTlsScsIf->Name, TLS_SCS_INTERFACE_NAME);

        pTlsScsIf->InterfaceId      = TLS_SCS_INTERFACE_ID;
        pTlsScsIf->hOwnerContext    = (ANSC_HANDLE)pMyObject;
        pTlsScsIf->Size             = sizeof(TLS_SCS_INTERFACE);

        pTlsScsIf->ConfigModule     = TlsEcoScsConfigModule;
        pTlsScsIf->CreateConnection = TlsEcoScsCreateConnection;
        pTlsScsIf->ConfigConnection = TlsEcoScsConfigConnection;
        pTlsScsIf->RemoveConnection = TlsEcoScsRemoveConnection;

        pTlsScsIf->StartConnection  = TlsEcoScsStartConnection;
        pTlsScsIf->CloseConnection  = TlsEcoScsCloseConnection;
        pTlsScsIf->QueryConnection  = TlsEcoScsQueryConnection;

        pTlsScsIf->RecvTlsMessage   = TlsEcoScsRecvTlsMessage;
        pTlsScsIf->SendAppMessage   = TlsEcoScsSendAppMessage;
    }

    if ( !pTlsMecIf )
    {
        pTlsMecIf = (PTLS_MEC_INTERFACE)AnscAllocateMemory(sizeof(TLS_MEC_INTERFACE));

        if ( !pTlsMecIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hTlsMecIf = (ANSC_HANDLE)pTlsMecIf;
        }

        AnscCopyString(pTlsMecIf->Name, TLS_MEC_INTERFACE_NAME);

        pTlsMecIf->InterfaceId          = TLS_MEC_INTERFACE_ID;
        pTlsMecIf->hOwnerContext        = (ANSC_HANDLE)pMyObject;
        pTlsMecIf->Size                 = sizeof(TLS_MEC_INTERFACE);

        pTlsMecIf->GetTlsSessionManager = TlsEcoMecGetTlsSessionManager;
        pTlsMecIf->GetTlsCryptoProvider = TlsEcoMecGetTlsCryptoProvider;
        pTlsMecIf->GetTlsHsmIf          = TlsEcoMecGetTlsHsmIf;
        pTlsMecIf->GetModuleParams      = TlsEcoMecGetModuleParams;
        pTlsMecIf->GetCertChain1        = TlsEcoMecGetCertChain1;
        pTlsMecIf->GetCertChain2        = TlsEcoMecGetCertChain2;
        pTlsMecIf->GetCertChain3        = TlsEcoMecGetCertChain3;
        pTlsMecIf->GetProfile           = TlsEcoMecGetProfile;
        pTlsMecIf->GetCACertByCert      = TlsEcoMecGetCACertByCert;
        pTlsMecIf->GetCACertByKey       = TlsEcoMecGetCACertByKey;
        pTlsMecIf->GetCACertByIssuer    = TlsEcoMecGetCACertByIssuer;
    }

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
HttpScoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus      = ANSC_STATUS_SUCCESS;
    PHTTP_SIMPLE_CLIENT_OBJECT      pMyObject         = (PHTTP_SIMPLE_CLIENT_OBJECT   )hThisObject;
    PHTTP_BSP_INTERFACE             pBspIf            = (PHTTP_BSP_INTERFACE          )pMyObject->hBspIf;
    PHTTP_HFP_INTERFACE             pHfpIf            = (PHTTP_HFP_INTERFACE          )pMyObject->hHfpIf;
    PHTTP_CAS_INTERFACE             pCasIf            = (PHTTP_CAS_INTERFACE          )pMyObject->hCasIf;
    PANSC_TIMER_DESCRIPTOR_OBJECT   pSessionTdo       = (PANSC_TIMER_DESCRIPTOR_OBJECT)pMyObject->hSessionTdo;
    PANSC_TDO_CLIENT_OBJECT         pSessionTdoClient = (PANSC_TDO_CLIENT_OBJECT      )pMyObject->hSessionTdoClient;

    if ( !pBspIf )
    {
        pBspIf = (PHTTP_BSP_INTERFACE)AnscAllocateMemory(sizeof(HTTP_BSP_INTERFACE));

        if ( !pBspIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hBspIf = (ANSC_HANDLE)pBspIf;
        }

        pBspIf->hOwnerContext = (ANSC_HANDLE)pMyObject;
        pBspIf->Size          = sizeof(HTTP_BSP_INTERFACE);
        pBspIf->Polish        = HttpScoBspPolish;
        pBspIf->Browse        = HttpScoBspBrowse;
        pBspIf->Notify        = HttpScoBspNotify;
    }

    if ( !pHfpIf )
    {
        pHfpIf = (PHTTP_HFP_INTERFACE)AnscAllocateMemory(sizeof(HTTP_HFP_INTERFACE));
#ifdef _CCSP_CWMP_TCP_CONNREQ_HANDLER
        AnscZeroMemory(pHfpIf, sizeof(HTTP_HFP_INTERFACE));
#endif

        if ( !pHfpIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            /* Initialize the data HFP_interface */
            pHfpIf->ParseHeader                     = AnscHttpParseHeader;
            pHfpIf->ParseRequestLine                = AnscHttpParseRequestLine;
            pHfpIf->ParseStatusLine                 = AnscHttpParseStatusLine;
            pHfpIf->ParseChunkedLine                = AnscHttpParseChunkedLine;
            pHfpIf->ParseHttpUrl                    = AnscHttpParseUrl;
            pHfpIf->ParseQueryString                = AnscHttpParseQueryString;
            pHfpIf->GetHeaderParam                  = AnscHttpGetHeaderParam;
            pHfpIf->GetHeaderSize                   = AnscHttpGetHeaderSize;
            pHfpIf->GetStatusLineSize               = AnscHttpGetStatusLineSize;
            pHfpIf->GetRequestLineSize              = AnscHttpGetRequestLineSize;
            pHfpIf->BuildHeader                     = AnscHttpBuildHeader;
            pHfpIf->BuildRequestLine                = AnscHttpBuildRequestLine;
            pHfpIf->BuildStatusLine                 = AnscHttpBuildStatusLine;

            /* set the owner context and size of the structure */
            pHfpIf->hOwnerContext                   = hThisObject;
            pHfpIf->Size                            = sizeof(HTTP_HFP_INTERFACE);

            /* register minimum header info */
            AnscHttpRegisterAllHeadersXInfo();
            pMyObject->hHfpIf = (ANSC_HANDLE)pHfpIf;
        }
#ifndef _CCSP_CWMP_TCP_CONNREQ_HANDLER
        pHfpIf->hOwnerContext = (ANSC_HANDLE)NULL;
        pHfpIf->Size          = sizeof(HTTP_HFP_INTERFACE);
#endif
    }

    if ( !pCasIf )
    {
        pCasIf = (PHTTP_CAS_INTERFACE)AnscAllocateMemory(sizeof(HTTP_CAS_INTERFACE));

        if ( !pCasIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hCasIf   = (ANSC_HANDLE)pCasIf;
        }

        pCasIf->hOwnerContext   = (ANSC_HANDLE)pMyObject;
        pCasIf->Size            = sizeof(HTTP_CAS_INTERFACE);

        pCasIf->EnableAuth      = HttpScoCasEnableAuth;
        pCasIf->IsAuthEnabled   = HttpScoCasIsAuthEnabled;
        pCasIf->ProcessRequest  = HttpScoCasProcessRequest;
        pCasIf->ProcessResponse = HttpScoCasProcessResponse;
        pCasIf->ClearAuthInfo   = HttpScoCasClearAuthInfo;
    }

    if ( !pSessionTdo )
    {
        pSessionTdo =
            (PANSC_TIMER_DESCRIPTOR_OBJECT)AnscCreateTimerDescriptor
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pSessionTdo )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hSessionTdo = (ANSC_HANDLE)pSessionTdo;
        }

        pSessionTdo->SetTimerType((ANSC_HANDLE)pSessionTdo, ANSC_TIMER_TYPE_PERIODIC      );
        pSessionTdo->SetInterval ((ANSC_HANDLE)pSessionTdo, HTTP_SCO_SESSION_TIME_INTERVAL);
    }

    if ( !pSessionTdoClient )
    {
        pSessionTdoClient = (PANSC_TDO_CLIENT_OBJECT)AnscAllocateMemory(sizeof(ANSC_TDO_CLIENT_OBJECT));

        if ( !pSessionTdoClient )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hSessionTdoClient = (ANSC_HANDLE)pSessionTdoClient;
        }

        pSessionTdoClient->hClientContext = (ANSC_HANDLE)pMyObject;
        pSessionTdoClient->Invoke         = HttpScoSessionTdoInvoke;

        pSessionTdo->SetClient((ANSC_HANDLE)pSessionTdo, (ANSC_HANDLE)pSessionTdoClient);
    }

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
AnscLpccoEnrollObjects
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus  = ANSC_STATUS_SUCCESS;
    PANSC_LPC_CONNECTOR_OBJECT      pMyObject     = (PANSC_LPC_CONNECTOR_OBJECT   )hThisObject;
    PANSC_IMC_INTERFACE             pAnscImcIf    = (PANSC_IMC_INTERFACE          )pMyObject->hAnscImcIf;
    PANSC_CPC_INTERFACE             pAnscCpcIf    = (PANSC_CPC_INTERFACE          )pMyObject->hAnscCpcIf;
    PANSC_TIMER_DESCRIPTOR_OBJECT   pConnTimerObj = (PANSC_TIMER_DESCRIPTOR_OBJECT)pMyObject->hConnTimerObj;
    PANSC_TDO_CLIENT_OBJECT         pConnTimerIf  = (PANSC_TDO_CLIENT_OBJECT      )pMyObject->hConnTimerIf;

    if ( !pAnscImcIf )
    {
        pAnscImcIf = (PANSC_IMC_INTERFACE)AnscAllocateMemory(sizeof(ANSC_IMC_INTERFACE));

        if ( !pAnscImcIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hAnscImcIf = (ANSC_HANDLE)pAnscImcIf;
        }

        AnscCopyString(pAnscImcIf->Name, ANSC_IMC_INTERFACE_NAME);

        pAnscImcIf->InterfaceId      = ANSC_IMC_INTERFACE_ID;
        pAnscImcIf->hOwnerContext    = (ANSC_HANDLE)pMyObject;
        pAnscImcIf->Size             = sizeof(ANSC_IMC_INTERFACE);

        pAnscImcIf->GenPartyAddr     = AnscLpccoImcGenPartyAddr;
        pAnscImcIf->GetLpcOpmode     = AnscLpccoImcGetLpcOpmode;
        pAnscImcIf->SetLpcOpmode     = AnscLpccoImcSetLpcOpmode;
        pAnscImcIf->GetPartyName     = AnscLpccoImcGetPartyName;
        pAnscImcIf->SetPartyName     = AnscLpccoImcSetPartyName;
        pAnscImcIf->IsPartyConnected = AnscLpccoImcIsPartyConnected;

        pAnscImcIf->Engage           = AnscLpccoImcEngage;
        pAnscImcIf->Cancel           = AnscLpccoImcCancel;
        pAnscImcIf->CallRequest      = AnscLpccoImcCallRequest;
        pAnscImcIf->CallRequest2     = AnscLpccoImcCallRequest2;
    }

    if ( !pAnscCpcIf )
    {
        pAnscCpcIf = (PANSC_CPC_INTERFACE)AnscAllocateMemory(sizeof(ANSC_CPC_INTERFACE));

        if ( !pAnscCpcIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hAnscCpcIf = (ANSC_HANDLE)pAnscCpcIf;
        }

        AnscCopyString(pAnscCpcIf->Name, ANSC_CPC_INTERFACE_NAME);

        pAnscCpcIf->InterfaceId      = ANSC_CPC_INTERFACE_ID;
        pAnscCpcIf->hOwnerContext    = (ANSC_HANDLE)pMyObject;
        pAnscCpcIf->Size             = sizeof(ANSC_CPC_INTERFACE);

        pAnscCpcIf->CallDispatch     = AnscLpccoCpcCallDispatch;
        pAnscCpcIf->FreeOutputBuffer = AnscLpccoCpcFreeOutputBuffer;
        pAnscCpcIf->NotifyEvent      = AnscLpccoCpcNotifyEvent;
    }

    if ( !pConnTimerObj )
    {
        pConnTimerObj =
            (PANSC_TIMER_DESCRIPTOR_OBJECT)AnscCreateTimerDescriptor
                (
                    pMyObject->hContainerContext,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );

        if ( !pConnTimerObj )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hConnTimerObj = (ANSC_HANDLE)pConnTimerObj;
        }

        pConnTimerObj->SetTimerType((ANSC_HANDLE)pConnTimerObj, ANSC_TIMER_TYPE_SPORADIC   );
        pConnTimerObj->SetInterval ((ANSC_HANDLE)pConnTimerObj, ANSC_LPCCO_DEF_CONN_TIMEOUT);
    }

    if ( !pConnTimerIf )
    {
        pConnTimerIf = (PANSC_TDO_CLIENT_OBJECT)AnscAllocateMemory(sizeof(ANSC_TDO_CLIENT_OBJECT));

        if ( !pConnTimerIf )
        {
            return  ANSC_STATUS_RESOURCES;
        }
        else
        {
            pMyObject->hConnTimerIf = (ANSC_HANDLE)pConnTimerIf;
        }

        pConnTimerIf->hClientContext = (ANSC_HANDLE)pMyObject;
        pConnTimerIf->Invoke         = AnscLpccoConnTimerInvoke;

        pConnTimerObj->SetClient((ANSC_HANDLE)pConnTimerObj, (ANSC_HANDLE)pConnTimerIf);
    }

    AnscCoEnrollObjects((ANSC_HANDLE)pMyObject);

    return  ANSC_STATUS_SUCCESS;
}