Пример #1
0
ConstLODNodePtr VolumeDataSourcePlugin::getNode( const NodeId nodeId ) const
{
    NodeIDLODNodePtrMap::iterator it = _lodNodeMap.find( nodeId );
    if( it == _lodNodeMap.end( ) )
    {
        LODNodePtr lodNodePtr( new LODNode() );
        internalNodeToLODNode( nodeId, *lodNodePtr );
        _lodNodeMap[ nodeId ] = lodNodePtr;
    }

    return _lodNodeMap[ nodeId ];
}
Пример #2
0
LODNode DataSourcePlugin::getNode(const NodeId& nodeId) const
{
    IdLODNodeMap::iterator it;
    {
        ReadLock lock(_mutex);
        it = _lodNodeMap.find(nodeId.getId());
        if (it != _lodNodeMap.end())
            return it->second;
    }

    WriteLock writeLock(_mutex);
    it = _lodNodeMap.find(nodeId.getId());
    if (it == _lodNodeMap.end())
    {
        const LODNode& node = internalNodeToLODNode(nodeId);
        _lodNodeMap[nodeId.getId()] = node;
    }

    return _lodNodeMap[nodeId.getId()];
}