コード例 #1
0
BOOL
SlapEcoUoaVerifyProxyObject
    (
        ANSC_HANDLE                 hThisObject,
        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_PROXY_OBJECT          pSlapObjProxy  = (PSLAP_OBJ_PROXY_OBJECT     )NULL;

    pSlapObjProxy =
        (PSLAP_OBJ_PROXY_OBJECT)pSlapObjMapper->GetObjProxy1
            (
                (ANSC_HANDLE)pSlapObjMapper,
                obj_name
            );

    if ( !pSlapObjProxy )
    {
        return  FALSE;
    }

    return  TRUE;
}
コード例 #2
0
ANSC_HANDLE
SlapOmoGetObjProxy1
    (
        ANSC_HANDLE                 hThisObject,
        char*                       path
    )
{
    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_PROXY_OBJECT          pObjProxy       = NULL;
    PANSC_TOKEN_CHAIN               pPathTokenChain = NULL;
    PANSC_STRING_TOKEN              pPathToken      = NULL;

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

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

    if ( returnStatus == ANSC_STATUS_SUCCESS )
    {
        pObjProxy =
            pMyObject->GetObjProxy2
                (
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)pPathTokenChain
                );
    }
    else
    {
        pObjProxy = (ANSC_HANDLE)NULL;
    }

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

    return  (ANSC_HANDLE)pObjProxy;
}
コード例 #3
0
ANSC_HANDLE
SlapEcoUoaCreateProxyObject
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hSlapContainer,
        char*                       obj_name,
        ANSC_HANDLE                 hSlapGoaObj
    )
{
    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_PROXY_OBJECT          pSlapObjProxy     = (PSLAP_OBJ_PROXY_OBJECT     )NULL;
    PSLAP_SRV_PROXY_OBJECT          pSlapSrvProxy     = (PSLAP_SRV_PROXY_OBJECT     )NULL;

    if ( !obj_name || (AnscSizeOfString(obj_name) == 0) )
    {
        return  (ANSC_HANDLE)NULL;
    }

    pSlapObjProxy =
        (PSLAP_OBJ_PROXY_OBJECT)pSlapObjMapper->GetObjProxy1
            (
                (ANSC_HANDLE)pSlapObjMapper,
                obj_name
            );

    if ( !pSlapObjProxy )
    {
        return  (ANSC_HANDLE)NULL;
    }
    else
    {
        pSlapSrvProxy =
            (PSLAP_SRV_PROXY_OBJECT)pSlapObjProxy->NewSrvProxy
                (
                    (ANSC_HANDLE)pSlapObjProxy,
                    hSlapGoaObj
                );
    }

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

    return  (ANSC_HANDLE)pSlapSrvProxy;
}
コード例 #4
0
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;
}
コード例 #5
0
ANSC_STATUS
SlapEcoUoaUnbindProxyObject
    (
        ANSC_HANDLE                 hThisObject,
        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;

    returnStatus =
        pSlapObjMapper->DelObjProxy
            (
                (ANSC_HANDLE)pSlapObjMapper,
                obj_name,
                TRUE
            );

    return  returnStatus;
}
コード例 #6
0
ANSC_STATUS
SlapOmoPopObjEntity
    (
        ANSC_HANDLE                 hThisObject,
        char*                       path
    )
{
    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;

    returnStatus =
        pMyObject->DelObjEntity
            (
                (ANSC_HANDLE)pMyObject,
                path,
                FALSE
            );

    return  returnStatus;
}
コード例 #7
0
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;
}
コード例 #8
0
ANSC_STATUS
SlapOmoAddObjProxy
    (
        ANSC_HANDLE                 hThisObject,
        char*                       path,
        ANSC_HANDLE                 hObjProxy
    )
{
    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_PROXY_OBJECT          pObjProxy       = (PSLAP_OBJ_PROXY_OBJECT   )hObjProxy;
    PSLAP_OBJ_BROKER_OBJECT         pThisObjBroker  = 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->MakObjBroker
                (
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)pPathTokenChain
                );

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

    if ( pThisObjBroker )
    {
        if ( pThisObjBroker->hSlapObjProxy != (ANSC_HANDLE)NULL )
        {
            return  ANSC_STATUS_COLLISION;
        }
        else
        {
            pThisObjBroker->hSlapObjProxy = (ANSC_HANDLE)pObjProxy;
        }
    }
    else
    {
        return  ANSC_STATUS_INTERNAL_ERROR;
    }

    return  ANSC_STATUS_SUCCESS;
}
コード例 #9
0
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;
}