ULONG
SlapEcoUoaGetObjCallOption
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hSlapObject,
        char*                       method_name,
        SLAP_PARAMETER_LIST*        params_in
    )
{
    ANSC_STATUS                     returnStatus      = ANSC_STATUS_SUCCESS;
    PSLAP_ENV_CONTROLLER_OBJECT     pMyObject         = (PSLAP_ENV_CONTROLLER_OBJECT)hThisObject;
    PSLAP_OBJ_MAPPER_OBJECT         pSlapObjMapper    = (PSLAP_OBJ_MAPPER_OBJECT    )pMyObject->hSlapObjMapper;
    PSLAP_OBJ_RECORD_OBJECT         pSlapObjRecord    = (PSLAP_OBJ_RECORD_OBJECT    )hSlapObject;
    PSLAP_OBJ_ENTITY_OBJECT         pSlapObjEntity    = (PSLAP_OBJ_ENTITY_OBJECT    )pSlapObjRecord->hSlapObjEntity;
    PSLAP_SRV_COMPONENT_OBJECT      pSlapSrvComponent = (PSLAP_SRV_COMPONENT_OBJECT )pSlapObjRecord->hSlapSrvComponent;

    if ( !pSlapObjEntity )
    {
        return  0;
    }

    return  pSlapObjEntity->ResolveCallOption
                (
                    (ANSC_HANDLE)pSlapObjEntity,
                    method_name,
                    params_in
                );
}
ANSC_STATUS
SlapEcoUoaDeleteObject
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hSlapObject
    )
{
    ANSC_STATUS                     returnStatus      = ANSC_STATUS_SUCCESS;
    PSLAP_ENV_CONTROLLER_OBJECT     pMyObject         = (PSLAP_ENV_CONTROLLER_OBJECT)hThisObject;
    PSLAP_OBJ_MAPPER_OBJECT         pSlapObjMapper    = (PSLAP_OBJ_MAPPER_OBJECT    )pMyObject->hSlapObjMapper;
    PSLAP_OBJ_CONTAINER_OBJECT      pSlapObjContainer = (PSLAP_OBJ_CONTAINER_OBJECT )NULL;
    PSLAP_OBJ_ENTITY_OBJECT         pSlapObjEntity    = (PSLAP_OBJ_ENTITY_OBJECT    )NULL;
    PSLAP_OBJ_RECORD_OBJECT         pSlapObjRecord    = (PSLAP_OBJ_RECORD_OBJECT    )hSlapObject;
    PSLAP_SRV_COMPONENT_OBJECT      pSlapSrvComponent = (PSLAP_SRV_COMPONENT_OBJECT )NULL;

    if ( !pSlapObjRecord )
    {
        return  ANSC_STATUS_UNAPPLICABLE;
    }
    else
    {
        pSlapObjContainer = (PSLAP_OBJ_CONTAINER_OBJECT)pSlapObjRecord->hSlapObjContainer;
        pSlapObjEntity    = (PSLAP_OBJ_ENTITY_OBJECT   )pSlapObjRecord->hSlapObjEntity;
        pSlapSrvComponent = (PSLAP_SRV_COMPONENT_OBJECT)pSlapObjRecord->hSlapSrvComponent;
    }

    if ( !pSlapObjEntity )
    {
        pSlapObjRecord->Remove((ANSC_HANDLE)pSlapObjRecord);

        return  ANSC_STATUS_INTERNAL_ERROR;
    }
    else
    {
        if ( pSlapObjRecord->GetRef((ANSC_HANDLE)pSlapObjRecord) > 0 )
        {
            pSlapObjRecord->AcqAccess((ANSC_HANDLE)pSlapObjRecord);
            pSlapObjRecord->DecRef   ((ANSC_HANDLE)pSlapObjRecord);
            pSlapObjRecord->RelAccess((ANSC_HANDLE)pSlapObjRecord);
        }

        returnStatus =
            pSlapObjEntity->DelObjRecord
                (
                    (ANSC_HANDLE)pSlapObjEntity,
                    (ANSC_HANDLE)pSlapObjContainer,
                    (ANSC_HANDLE)pSlapSrvComponent,
                    FALSE
                );
    }

    return  returnStatus;
}
ANSC_HANDLE
SlapOeoOlaGetObjectProperty
    (
        ANSC_HANDLE                 hThisObject,
        char*                       property_name
    )
{
    ANSC_STATUS                     returnStatus    = ANSC_STATUS_SUCCESS;
    PSLAP_OBJ_ENTITY_OBJECT         pMyObject       = (PSLAP_OBJ_ENTITY_OBJECT)hThisObject;
    PSLAP_OBJECT_PROPERTY           pObjectProperty = (PSLAP_OBJECT_PROPERTY  )NULL;

    return  pMyObject->GetObjectProperty((ANSC_HANDLE)pMyObject, property_name);
}
ANSC_HANDLE
SlapOeoOlaGetMethodDescriptor
    (
        ANSC_HANDLE                 hThisObject,
        char*                       method_name,
        SLAP_PARAMETER_LIST*        param_list_input
    )
{
    ANSC_STATUS                     returnStatus      = ANSC_STATUS_SUCCESS;
    PSLAP_OBJ_ENTITY_OBJECT         pMyObject         = (PSLAP_OBJ_ENTITY_OBJECT)hThisObject;
    PSLAP_METHOD_DESCRIPTOR         pMethodDescriptor = (PSLAP_METHOD_DESCRIPTOR)NULL;

    return  pMyObject->GetMethodDescriptor2((ANSC_HANDLE)pMyObject, method_name, param_list_input);
}
ANSC_STATUS
SlapEcoUoaEnrollObjDescriptor
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hObjDescr
    )
{
    ANSC_STATUS                     returnStatus   = ANSC_STATUS_SUCCESS;
    PSLAP_ENV_CONTROLLER_OBJECT     pMyObject      = (PSLAP_ENV_CONTROLLER_OBJECT)hThisObject;
    PSLAP_OBJ_MAPPER_OBJECT         pSlapObjMapper = (PSLAP_OBJ_MAPPER_OBJECT    )pMyObject->hSlapObjMapper;
    PSLAP_OBJECT_DESCRIPTOR         pObjDescriptor = (PSLAP_OBJECT_DESCRIPTOR    )hObjDescr;
    PSLAP_OBJ_ENTITY_OBJECT         pSlapObjEntity = (PSLAP_OBJ_ENTITY_OBJECT    )NULL;

    pSlapObjEntity =
        (PSLAP_OBJ_ENTITY_OBJECT)SlapCreateObjEntity
            (
                pMyObject->hContainerContext,
                (ANSC_HANDLE)pMyObject,
                (ANSC_HANDLE)NULL
            );

    if ( !pSlapObjEntity )
    {
        return  ANSC_STATUS_RESOURCES;
    }
    else
    {
        pSlapObjEntity->hSlapUoaIf = pMyObject->hSlapUoaIf;
        pSlapObjEntity->hSlapBssIf = pMyObject->hSlapBssIf;

        pSlapObjEntity->SetObjDescriptor((ANSC_HANDLE)pSlapObjEntity, (ANSC_HANDLE)pObjDescriptor);
    }

    returnStatus =
        pSlapObjMapper->AddObjEntity
            (
                (ANSC_HANDLE)pSlapObjMapper,
                pObjDescriptor->ObjName,
                (ANSC_HANDLE)pSlapObjEntity
            );

    if ( returnStatus != ANSC_STATUS_SUCCESS )
    {
        pSlapObjEntity->Remove((ANSC_HANDLE)pSlapObjEntity);
    }

    return  returnStatus;
}
ANSC_STATUS
SlapOeoResolveCallDescrO
    (
        ANSC_HANDLE                 hThisObject,
        char*                       call_description,
        SLAP_PARAMETER_LIST*        param_list
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PSLAP_OBJ_ENTITY_OBJECT         pMyObject    = (PSLAP_OBJ_ENTITY_OBJECT)hThisObject;

    returnStatus =
        pMyObject->ResolveCallDescrI
            (
                (ANSC_HANDLE)pMyObject,
                call_description,
                param_list
            );

    return  returnStatus;
}
Пример #7
0
ANSC_STATUS
SlapOboRemove
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus   = ANSC_STATUS_SUCCESS;
    PSLAP_OBJ_BROKER_OBJECT         pMyObject      = (PSLAP_OBJ_BROKER_OBJECT)hThisObject;
    PSLAP_OBJ_ENTITY_OBJECT         pSlapObjEntity = (PSLAP_OBJ_ENTITY_OBJECT)pMyObject->hSlapObjEntity;
    PSLAP_OBJ_PROXY_OBJECT          pSlapObjProxy  = (PSLAP_OBJ_PROXY_OBJECT )pMyObject->hSlapObjProxy;

    if ( pMyObject->PathName )
    {
        AnscFreeMemory(pMyObject->PathName);

        pMyObject->PathName = NULL;
    }

    pMyObject->DelAllObjBrokers((ANSC_HANDLE)pMyObject);

    if ( pSlapObjEntity )
    {
        pSlapObjEntity->Remove((ANSC_HANDLE)pSlapObjEntity);

        pMyObject->hSlapObjEntity = (ANSC_HANDLE)NULL;
    }

    if ( pSlapObjProxy )
    {
        pSlapObjProxy->Remove((ANSC_HANDLE)pSlapObjProxy);

        pMyObject->hSlapObjProxy = (ANSC_HANDLE)NULL;
    }

    AnscFreeLock (&pMyObject->OboTableLock);
    AnscLcoRemove((ANSC_HANDLE)pMyObject  );

    return  ANSC_STATUS_SUCCESS;
}
ANSC_HANDLE
SlapEcoUoaAcqObjectAccess
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hSlapContainer,
        char*                       obj_name
    )
{
    ANSC_STATUS                     returnStatus      = ANSC_STATUS_SUCCESS;
    PSLAP_ENV_CONTROLLER_OBJECT     pMyObject         = (PSLAP_ENV_CONTROLLER_OBJECT)hThisObject;
    PSLAP_OBJ_MAPPER_OBJECT         pSlapObjMapper    = (PSLAP_OBJ_MAPPER_OBJECT    )pMyObject->hSlapObjMapper;
    PSLAP_OBJ_CONTAINER_OBJECT      pSlapObjContainer = (PSLAP_OBJ_CONTAINER_OBJECT )hSlapContainer;
    PSLAP_OBJ_ENTITY_OBJECT         pSlapObjEntity    = (PSLAP_OBJ_ENTITY_OBJECT    )NULL;
    PSLAP_OBJ_RECORD_OBJECT         pSlapObjRecord    = (PSLAP_OBJ_RECORD_OBJECT    )NULL;

    if ( !obj_name )
    {
        return  (ANSC_HANDLE)NULL;
    }
    else if ( !pSlapObjContainer )
    {
        pSlapObjContainer = (PSLAP_OBJ_CONTAINER_OBJECT)pMyObject->hSlapDefContainer;

        if ( !pSlapObjContainer )
        {
            return  (ANSC_HANDLE)NULL;
        }
    }

    pSlapObjEntity =
        (PSLAP_OBJ_ENTITY_OBJECT)pSlapObjMapper->GetObjEntity1
            (
                (ANSC_HANDLE)pSlapObjMapper,
                obj_name
            );

    if ( !pSlapObjEntity )
    {
        return  (ANSC_HANDLE)NULL;
    }
    else
    {
        pSlapObjRecord =
            (PSLAP_OBJ_RECORD_OBJECT)pSlapObjEntity->GetObjRecord
                (
                    (ANSC_HANDLE)pSlapObjEntity,
                    (ANSC_HANDLE)pSlapObjContainer,
                    0
                );
    }

    if ( !pSlapObjRecord )
    {
        return  (ANSC_HANDLE)NULL;
    }
    else
    {
        pSlapObjRecord->IncRef   ((ANSC_HANDLE)pSlapObjRecord);
        pSlapObjRecord->RelAccess((ANSC_HANDLE)pSlapObjRecord);
    }

    return  (ANSC_HANDLE)pSlapObjRecord;
}
ULONG
SlapOeoResolveCallOption
    (
        ANSC_HANDLE                 hThisObject,
        char*                       method_name,
        SLAP_PARAMETER_LIST*        param_list
    )
{
    ANSC_STATUS                     returnStatus       = ANSC_STATUS_SUCCESS;
    PSLAP_OBJ_ENTITY_OBJECT         pMyObject          = (PSLAP_OBJ_ENTITY_OBJECT)hThisObject;
    PSLAP_METHOD_DESCRIPTOR         pMethodDescriptor1 = (PSLAP_METHOD_DESCRIPTOR)NULL;
    PSLAP_METHOD_DESCRIPTOR         pMethodDescriptor2 = (PSLAP_METHOD_DESCRIPTOR)NULL;
    PSLAP_OBJECT_PROPERTY           pObjectProperty    = (PSLAP_OBJECT_PROPERTY  )NULL;
    ULONG                           ulCallOptions      = (ULONG                  )0;
    char*                           property_name      = (char*                  )NULL;

    pMethodDescriptor1 =
        (PSLAP_METHOD_DESCRIPTOR)pMyObject->GetMethodDescriptor2
            (
                (ANSC_HANDLE)pMyObject,
                method_name,
                param_list
            );

    if ( !pMethodDescriptor1 )
    {
        return  0;
    }
    else
    {
        ulCallOptions = pMethodDescriptor1->CallOptions;
    }

    /*
     * If the specified method is one the pre-defined 'bridge' functions, namely 'GetProperty',
     * 'SetProperty', 'GetItem', 'SetItem', 'GetItemByIndex', and 'SetItemByIndex', we need to
     * locate the target method and examine it's call options.
     */
    switch ( pMethodDescriptor1->BridgeId )
    {
        case    SLAP_BRIDGE_ID_GetProperty :

                if ( !param_list )
                {
                    break;
                }
                else if ( param_list->ParamCount < 1 )
                {
                    break;
                }
                else if ( (param_list->ParamArray[0].Syntax            != SLAP_VAR_SYNTAX_string) ||
                          (param_list->ParamArray[0].Variant.varString == NULL                  ) )
                {
                    break;
                }
                else
                {
                    property_name = param_list->ParamArray[0].Variant.varString;
                }

                pObjectProperty =
                    (PSLAP_OBJECT_PROPERTY)pMyObject->GetObjectProperty
                        (
                            (ANSC_HANDLE)pMyObject,
                            property_name
                        );

                if ( !pObjectProperty )
                {
                    break;
                }
                else
                {
                    /*
                     * When searching for the target method, we need to make sure the number of
                     * input parameters match the one specified in the target method descriptor.
                     * Since the content of the parameters don't really matter when perform the
                     * lookup, we simply modify the parameter count.
                     */
                    param_list->ParamCount--;
                    pMethodDescriptor2 =
                        (PSLAP_METHOD_DESCRIPTOR)pMyObject->GetMethodDescriptor2
                            (
                                (ANSC_HANDLE)pMyObject,
                                pObjectProperty->GetMethodName,
                                param_list
                            );
                    param_list->ParamCount++;
                }

                if ( !pMethodDescriptor2 )
                {
                    break;
                }
                else if ( pMethodDescriptor2->CallOptions & SLAP_CALL_OPTION_skipGoaTranslation )
                {
                    ulCallOptions |= SLAP_CALL_OPTION_skipGoaTranslation;
                }

                break;

        case    SLAP_BRIDGE_ID_SetProperty :

                if ( !param_list )
                {
                    break;
                }
                else if ( param_list->ParamCount < 1 )
                {
                    break;
                }
                else if ( (param_list->ParamArray[0].Syntax            != SLAP_VAR_SYNTAX_string) ||
                          (param_list->ParamArray[0].Variant.varString == NULL                  ) )
                {
                    break;
                }
                else
                {
                    property_name = param_list->ParamArray[0].Variant.varString;
                }

                pObjectProperty =
                    (PSLAP_OBJECT_PROPERTY)pMyObject->GetObjectProperty
                        (
                            (ANSC_HANDLE)pMyObject,
                            property_name
                        );

                if ( !pObjectProperty )
                {
                    break;
                }
                else
                {
                    /*
                     * When searching for the target method, we need to make sure the number of
                     * input parameters match the one specified in the target method descriptor.
                     * Since the content of the parameters don't really matter when perform the
                     * lookup, we simply modify the parameter count.
                     */
                    param_list->ParamCount--;
                    pMethodDescriptor2 =
                        (PSLAP_METHOD_DESCRIPTOR)pMyObject->GetMethodDescriptor2
                            (
                                (ANSC_HANDLE)pMyObject,
                                pObjectProperty->SetMethodName,
                                param_list
                            );
                    param_list->ParamCount++;
                }

                if ( !pMethodDescriptor2 )
                {
                    break;
                }
                else if ( pMethodDescriptor2->CallOptions & SLAP_CALL_OPTION_skipGoaTranslation )
                {
                    ulCallOptions |= SLAP_CALL_OPTION_skipGoaTranslation;
                }

                break;

        case    SLAP_BRIDGE_ID_GetItem :

                if ( TRUE )
                {
                    property_name = "CollectionItem";
                }

                pObjectProperty =
                    (PSLAP_OBJECT_PROPERTY)pMyObject->GetObjectProperty
                        (
                            (ANSC_HANDLE)pMyObject,
                            property_name
                        );

                if ( !pObjectProperty )
                {
                    break;
                }
                else
                {
                    pMethodDescriptor2 =
                        (PSLAP_METHOD_DESCRIPTOR)pMyObject->GetMethodDescriptor2
                            (
                                (ANSC_HANDLE)pMyObject,
                                pObjectProperty->GetMethodName,
                                param_list
                            );
                }

                if ( !pMethodDescriptor2 )
                {
                    break;
                }
                else if ( pMethodDescriptor2->CallOptions & SLAP_CALL_OPTION_skipGoaTranslation )
                {
                    ulCallOptions |= SLAP_CALL_OPTION_skipGoaTranslation;
                }

                break;

        case    SLAP_BRIDGE_ID_SetItem :

                if ( TRUE )
                {
                    property_name = "CollectionItem";
                }

                pObjectProperty =
                    (PSLAP_OBJECT_PROPERTY)pMyObject->GetObjectProperty
                        (
                            (ANSC_HANDLE)pMyObject,
                            property_name
                        );

                if ( !pObjectProperty )
                {
                    break;
                }
                else
                {
                    pMethodDescriptor2 =
                        (PSLAP_METHOD_DESCRIPTOR)pMyObject->GetMethodDescriptor2
                            (
                                (ANSC_HANDLE)pMyObject,
                                pObjectProperty->SetMethodName,
                                param_list
                            );
                }

                if ( !pMethodDescriptor2 )
                {
                    break;
                }
                else if ( pMethodDescriptor2->CallOptions & SLAP_CALL_OPTION_skipGoaTranslation )
                {
                    ulCallOptions |= SLAP_CALL_OPTION_skipGoaTranslation;
                }

                break;

        case    SLAP_BRIDGE_ID_GetItemByIndex :

                if ( TRUE )
                {
                    property_name = "ItemByIndex";
                }

                pObjectProperty =
                    (PSLAP_OBJECT_PROPERTY)pMyObject->GetObjectProperty
                        (
                            (ANSC_HANDLE)pMyObject,
                            property_name
                        );

                if ( !pObjectProperty )
                {
                    break;
                }
                else
                {
                    pMethodDescriptor2 =
                        (PSLAP_METHOD_DESCRIPTOR)pMyObject->GetMethodDescriptor2
                            (
                                (ANSC_HANDLE)pMyObject,
                                pObjectProperty->GetMethodName,
                                param_list
                            );
                }

                if ( !pMethodDescriptor2 )
                {
                    break;
                }
                else if ( pMethodDescriptor2->CallOptions & SLAP_CALL_OPTION_skipGoaTranslation )
                {
                    ulCallOptions |= SLAP_CALL_OPTION_skipGoaTranslation;
                }

                break;

        case    SLAP_BRIDGE_ID_SetItemByIndex :

                if ( TRUE )
                {
                    property_name = "ItemByIndex";
                }

                pObjectProperty =
                    (PSLAP_OBJECT_PROPERTY)pMyObject->GetObjectProperty
                        (
                            (ANSC_HANDLE)pMyObject,
                            property_name
                        );

                if ( !pObjectProperty )
                {
                    break;
                }
                else
                {
                    pMethodDescriptor2 =
                        (PSLAP_METHOD_DESCRIPTOR)pMyObject->GetMethodDescriptor2
                            (
                                (ANSC_HANDLE)pMyObject,
                                pObjectProperty->SetMethodName,
                                param_list
                            );
                }

                if ( !pMethodDescriptor2 )
                {
                    break;
                }
                else if ( pMethodDescriptor2->CallOptions & SLAP_CALL_OPTION_skipGoaTranslation )
                {
                    ulCallOptions |= SLAP_CALL_OPTION_skipGoaTranslation;
                }

                break;

        default :

                break;
    }

    return  ulCallOptions;
}
ANSC_STATUS
SlapOmoDelObjEntity
    (
        ANSC_HANDLE                 hThisObject,
        char*                       path,
        BOOL                        bFreeObjEntity
    )
{
    ANSC_STATUS                     returnStatus    = ANSC_STATUS_SUCCESS;
    PSLAP_OBJ_MAPPER_OBJECT         pMyObject       = (PSLAP_OBJ_MAPPER_OBJECT  )hThisObject;
    PSLAP_OBJ_MAPPER_PROPERTY       pProperty       = (PSLAP_OBJ_MAPPER_PROPERTY)&pMyObject->Property;
    PSLAP_OBJ_BROKER_OBJECT         pRootObjBroker  = (PSLAP_OBJ_BROKER_OBJECT  )pMyObject->hRootObjBroker;
    PSLAP_OBJ_ENTITY_OBJECT         pObjEntity      = NULL;
    PSLAP_OBJ_BROKER_OBJECT         pThisObjBroker  = NULL;
    PSLAP_OBJ_BROKER_OBJECT         pNextObjBroker  = NULL;
    PANSC_TOKEN_CHAIN               pPathTokenChain = NULL;
    PANSC_STRING_TOKEN              pPathToken      = NULL;

    pPathTokenChain = (PANSC_TOKEN_CHAIN)AnscAllocateMemory(sizeof(ANSC_TOKEN_CHAIN));

    if ( !pPathTokenChain )
    {
        return  ANSC_STATUS_RESOURCES;
    }
    else
    {
        returnStatus =
            AnscSetTokenChain
                (
                    (ANSC_HANDLE)pPathTokenChain,
                    path,
                    SLAP_OBJ_PATH_SEPARATORS
                );
    }

    if ( returnStatus != ANSC_STATUS_SUCCESS )
    {
        AnscDelTokenChain((ANSC_HANDLE)pPathTokenChain);
        AnscFreeMemory   ((ANSC_HANDLE)pPathTokenChain);

        return  returnStatus;
    }
    else
    {
        pThisObjBroker =
            (PSLAP_OBJ_BROKER_OBJECT)pMyObject->GetObjBroker
                (
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)pPathTokenChain
                );

        AnscDelTokenChain((ANSC_HANDLE)pPathTokenChain);
        AnscFreeMemory   ((ANSC_HANDLE)pPathTokenChain);
    }

    if ( pThisObjBroker )
    {
        pObjEntity = (PSLAP_OBJ_ENTITY_OBJECT)pThisObjBroker->hSlapObjEntity;

        if ( pObjEntity )
        {
            pThisObjBroker->hSlapObjEntity = (ANSC_HANDLE)NULL;

            if ( bFreeObjEntity )
            {
                pObjEntity->Remove((ANSC_HANDLE)pObjEntity);
            }
        }
    }
    else
    {
        return  ANSC_STATUS_CANT_FIND;
    }

    /*
     * After removing the associated Obj Entity Object, the Obj Broker Object may have become
     * removeable if there's no more Broker Objects currently associated with it. We shall trim all
     * the unnecessary branches from the bottom to the top.
     */
    while ( pThisObjBroker && (pThisObjBroker != pRootObjBroker) && pThisObjBroker->IsRemoveable((ANSC_HANDLE)pThisObjBroker) )
    {
        pNextObjBroker = pThisObjBroker;
        pThisObjBroker = (PSLAP_OBJ_BROKER_OBJECT)pNextObjBroker->hOwnerContext;
        returnStatus   =
            pThisObjBroker->DelObjBroker
                (
                    (ANSC_HANDLE)pThisObjBroker,
                    pNextObjBroker->PathName
                );
    }

    return  ANSC_STATUS_SUCCESS;
}