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 ]; }
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()]; }