示例#1
0
// Remove child node
bool pyVaultNode::RemoveNode( pyVaultNode& pynode, PyObject* cbObject, uint32_t cbContext )
{
    pyVaultNodeOperationCallback * cb = new pyVaultNodeOperationCallback( cbObject );

    if (fNode && pynode.fNode)
    {
        // Hack the callbacks until vault notification is in place
        cb->VaultOperationStarted( cbContext );

        VaultRemoveChildNode(fNode->GetNodeId(), pynode.fNode->GetNodeId(), nil, nil);

        cb->SetNode(pynode.fNode);
        cb->fPyNodeRef = pyVaultNodeRef::New(fNode, pynode.fNode);
        cb->VaultOperationComplete( cbContext, hsOK );
        return true;
    }
    else
    {
        // manually make the callback
        cb->VaultOperationStarted( cbContext );
        cb->VaultOperationComplete( cbContext, hsFail );
    }

    return false;
}
示例#2
0
// Remove all child nodes
void pyVaultNode::RemoveAllNodes( void )
{
    if (!fNode)
        return;
        
    ARRAY(unsigned) nodeIds;
    fNode->GetChildNodeIds(&nodeIds, 1);
    for (unsigned i = 0; i < nodeIds.Count(); ++i)
        VaultRemoveChildNode(fNode->GetNodeId(), nodeIds[i], nil, nil);
}
void pyVaultPlayerInfoListNode::RemovePlayer( uint32_t playerID )
{
    if (!fNode)
        return;

    NetVaultNode * templateNode = NEWZERO(NetVaultNode);
    templateNode->IncRef();
    templateNode->SetNodeType(plVault::kNodeType_PlayerInfo);
    VaultPlayerInfoNode access(templateNode);
    access.SetPlayerId(playerID);
            
    if (RelVaultNode * rvn = fNode->GetChildNodeIncRef(templateNode, 1)) {
        VaultRemoveChildNode(fNode->nodeId, rvn->nodeId, nil, nil);
        rvn->DecRef();
    }
    
    templateNode->DecRef();
}