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; }
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; }
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; }
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 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; }
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; }
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; }
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; }
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; }