Exemple #1
0
void
CachePolicy::mergeAndOverride(const CachePolicy& rhs)
{
    if ( rhs.usage().isSet() )
        usage() = rhs.usage().get();

    if ( rhs.minTime().isSet() )
        minTime() = rhs.minTime().get();

    if ( rhs.maxAge().isSet() )
        maxAge() = rhs.maxAge().get();
}
void
TerrainLayer::refreshTileSourceCachePolicyHint()
{
    if ( _tileSource.valid() && !_initOptions.cachePolicy().isSet() )
    {
        CachePolicy hint = _tileSource->getCachePolicyHint( _targetProfileHint.get() );

        if ( hint.usage().isSetTo(CachePolicy::USAGE_NO_CACHE) )
        {
            setCachePolicy( hint );
            OE_INFO << LC << "Caching disabled (by policy hint)" << std::endl;
        }
    }
}
Exemple #3
0
void
TerrainLayer::refreshTileSourceCachePolicyHint(TileSource* ts)
{
    if ( ts && getCacheSettings() && !options().cachePolicy().isSet() )
    {
        CachePolicy hint = ts->getCachePolicyHint( _targetProfileHint.get() );

        if ( hint.usage().isSetTo(CachePolicy::USAGE_NO_CACHE) )
        {
            getCacheSettings()->cachePolicy() = hint;
            OE_INFO << LC << "Caching disabled (by policy hint)" << std::endl;
        }
    }
}
Exemple #4
0
TileSource* 
TerrainLayer::getTileSource() const
{
    if ( _tileSourceInitFailed )
        return 0L;

    if ((_tileSource.valid() && !_tileSourceInitAttempted) ||
        (!_tileSource.valid() && !isCacheOnly()))
    {
        Threading::ScopedMutexLock lock(_initTileSourceMutex);
        
        // double-check pattern
        if ((_tileSource.valid() && !_tileSourceInitAttempted) ||
            (!_tileSource.valid() && !isCacheOnly()))
        {
            // Initialize the tile source once.
            const_cast<TerrainLayer*>(this)->initTileSource();

            // read the cache policy hint from the tile source unless user expressly set 
            // a policy in the initialization options.
            if ( _tileSource.valid() && !_initOptions.cachePolicy().isSet() )
            {
                CachePolicy hint = _tileSource->getCachePolicyHint( _targetProfileHint.get() );

                if ( hint.usage().isSetTo(CachePolicy::USAGE_NO_CACHE) )
                {
                    const_cast<TerrainLayer*>(this)->setCachePolicy( hint );
                    OE_INFO << LC << "Caching disabled (by policy hint)" << std::endl;
                }
            }

            // Unless the user has already configured an expiration policy, use the "last modified"
            // timestamp of the TileSource to set a minimum valid cache entry timestamp.
            if ( _tileSource.valid() )
            {
                CachePolicy& cp = _runtimeOptions->cachePolicy().mutable_value();
                if ( !cp.minTime().isSet() && !cp.maxAge().isSet() )
                {
                    cp.minTime() = _tileSource->getLastModifiedTime();
                }
                OE_INFO << LC << "cache policy = " << getCachePolicy().usageString() << std::endl;
            }
        }
    }

    return _tileSource.get();
}
Exemple #5
0
TileSource* 
TerrainLayer::getTileSource() const
{
    if ( _tileSourceInitFailed )
        return 0L;

    if ((_tileSource.valid() && !_tileSourceInitAttempted) ||
        (!_tileSource.valid() && !isCacheOnly()))
    {
        OpenThreads::ScopedLock< OpenThreads::Mutex > lock(const_cast<TerrainLayer*>(this)->_initTileSourceMutex );
        
        // double-check pattern
        if ((_tileSource.valid() && !_tileSourceInitAttempted) ||
            (!_tileSource.valid() && !isCacheOnly()))
        {
            // Initialize the tile source once.
            const_cast<TerrainLayer*>(this)->initTileSource();

            // read the cache policy hint from the tile source unless user expressly set 
            // a policy in the initialization options.
            if ( _tileSource.valid() && !_initOptions.cachePolicy().isSet() )
            {
                CachePolicy hint = _tileSource->getCachePolicyHint();

                if ( hint.usage().isSetTo(CachePolicy::USAGE_NO_CACHE) )
                {
                    const_cast<TerrainLayer*>(this)->setCachePolicy( hint );
                    OE_INFO << LC << "Caching disabled (by policy hint)" << std::endl;
                }
            }

            OE_INFO << LC << "cache policy = " << getCachePolicy().usageString() << std::endl;
        }
    }

    return _tileSource.get();
}