示例#1
0
PyObject * pyVaultNodeRef::GetSaver () {
    if (!fParent || !fChild)
        return 0;

    RelVaultNode * saver = nil;
    if (RelVaultNode * child = VaultGetNodeIncRef(fChild->GetNodeId())) {
        if (unsigned saverId = child->GetRefOwnerId(fParent->GetNodeId())) {
            // Find the player info node representing the saver
            NetVaultNode * templateNode = new NetVaultNode;
            templateNode->Ref();
            templateNode->SetNodeType(plVault::kNodeType_PlayerInfo);
            VaultPlayerInfoNode access(templateNode);
            access.SetPlayerId(saverId);
            saver = VaultGetNodeIncRef(templateNode);

            if (!saver) {
                ARRAY(unsigned) nodeIds;
                VaultFindNodesAndWait(templateNode, &nodeIds);
                if (nodeIds.Count() > 0) {
                    VaultFetchNodesAndWait(nodeIds.Ptr(), nodeIds.Count());
                    saver = VaultGetNodeIncRef(nodeIds[0]);
                }
            }

            templateNode->UnRef();
        }
        child->UnRef();
    }
    if (!saver)
        PYTHON_RETURN_NONE;
        
    PyObject * result = pyVaultPlayerInfoNode::New(saver);
    saver->UnRef();
    return result;
}
示例#2
0
PyObject * pyVaultNode::GetChildNode (unsigned nodeId) {

    if (!fNode)
        PYTHON_RETURN_NONE;
        
    RelVaultNode * templateNode = new RelVaultNode;
    templateNode->Ref();
    templateNode->SetNodeId(nodeId);
    RelVaultNode * rvn = fNode->GetChildNodeIncRef(templateNode, 1);
    templateNode->UnRef();
    
    if (rvn) {
        PyObject * result = pyVaultNode::New(rvn);
        rvn->UnRef();
        return result;
    }

    PYTHON_RETURN_NONE;
}
示例#3
0
plUUID pyAgeVault::GetAgeGuid( void )
{
    RelVaultNode * rvn = VaultGetAgeInfoNodeIncRef();
    if (rvn) {
        VaultAgeInfoNode ageInfo(rvn);
        plUUID uuid = ageInfo.GetAgeInstanceGuid();
        rvn->UnRef();
        return uuid;
    }
    return kNilUuid;
}
示例#4
0
PyObject* pyAgeVault::GetAgeDevicesFolder( void )
{
    RelVaultNode * rvn = VaultGetAgeDevicesFolderIncRef();
    if (rvn) {
        PyObject * result = pyVaultFolderNode::New(rvn);
        rvn->UnRef();
        return result;
    }

    // just return a None object
    PYTHON_RETURN_NONE;
}
示例#5
0
PyObject* pyAgeVault::GetAgeInfo()
{
    RelVaultNode * rvn = VaultGetAgeInfoNodeIncRef();
    if (rvn) {
        PyObject * result = pyVaultAgeInfoNode::New(rvn);
        rvn->UnRef();
        return result;
    }

    // just return a None object
    PYTHON_RETURN_NONE;
}
示例#6
0
PyObject* pyAgeVault::GetSubAgeLink( const pyAgeInfoStruct & info )
{
    RelVaultNode * rvn = VaultFindAgeSubAgeLinkIncRef(info.GetAgeInfo());
    if (rvn) {
        PyObject * result = pyVaultAgeLinkNode::New(rvn);
        rvn->UnRef();
        return result;
    }

    // just return a None object
    PYTHON_RETURN_NONE;
}
示例#7
0
PyObject* pyAgeVault::FindNode( pyVaultNode* templateNode ) const
{
    if (RelVaultNode * rvn = VaultGetAgeNodeIncRef()) {
        RelVaultNode * find = rvn->GetChildNodeIncRef(templateNode->fNode, 1);
        rvn->UnRef();
        if (find) {
            PyObject * result = pyVaultNode::New(find);
            find->UnRef();
            return result;
        }
    }

    PYTHON_RETURN_NONE;
}
示例#8
0
PyObject * pyVaultNode::GetNode2( uint32_t nodeID ) const
{
    PyObject * result = nil;
    if ( fNode )
    {
        RelVaultNode * templateNode = new RelVaultNode;
        templateNode->Ref();
        templateNode->SetNodeId(nodeID);
        if (RelVaultNode * rvn = fNode->GetChildNodeIncRef(templateNode, 1)) {
            result = pyVaultNodeRef::New(fNode, rvn);
            rvn->UnRef();
        }
        templateNode->UnRef();
    }
    
    if (result)
        return result;

    PYTHON_RETURN_NONE;
}
示例#9
0
PyObject* pyVaultNode::GetCreatorNode( void )
{
    PyObject * result = nil;
    if (fNode)
    {
        RelVaultNode * templateNode = new RelVaultNode;
        templateNode->Ref();
        templateNode->SetNodeType(plVault::kNodeType_PlayerInfo);
        VaultPlayerInfoNode plrInfo(templateNode);
        plrInfo.SetPlayerId(fNode->GetCreatorId());
        
        if (RelVaultNode * rvn = VaultGetNodeIncRef(templateNode)) {
            result = pyVaultPlayerInfoNode::New(rvn);
            rvn->UnRef();
        }
        templateNode->UnRef();
    }
    
    if (result)
        return result;
        
    // just return a None object
    PYTHON_RETURN_NONE;
}