Example usage for com.google.common.cache Weigher weigh

List of usage examples for com.google.common.cache Weigher weigh

Introduction

In this page you can find the example usage for com.google.common.cache Weigher weigh.

Prototype

int weigh(K key, V value);

Source Link

Document

Returns the weight of a cache entry.

Usage

From source file:com.google.gerrit.server.cache.h2.DefaultCacheFactory.java

@SuppressWarnings("unchecked")
<K, V> CacheBuilder<K, V> create(CacheBinding<K, V> def, boolean unwrapValueHolder) {
    CacheBuilder<K, V> builder = newCacheBuilder();
    builder.recordStats();/*  w w  w  .j  a va2  s  .c om*/
    builder.maximumWeight(cfg.getLong("cache", def.name(), "memoryLimit", def.maximumWeight()));

    builder.removalListener(forwardingRemovalListenerFactory.create(def.name()));

    Weigher<K, V> weigher = def.weigher();
    if (weigher != null && unwrapValueHolder) {
        final Weigher<K, V> impl = weigher;
        weigher = (Weigher<K, V>) new Weigher<K, ValueHolder<V>>() {
            @Override
            public int weigh(K key, ValueHolder<V> value) {
                return impl.weigh(key, value.value);
            }
        };
    } else if (weigher == null) {
        weigher = unitWeight();
    }
    builder.weigher(weigher);

    Long age = def.expireAfterWrite(TimeUnit.SECONDS);
    if (has(def.name(), "maxAge")) {
        builder.expireAfterWrite(ConfigUtil.getTimeUnit(cfg, "cache", def.name(), "maxAge",
                age != null ? age : 0, TimeUnit.SECONDS), TimeUnit.SECONDS);
    } else if (age != null) {
        builder.expireAfterWrite(age, TimeUnit.SECONDS);
    }

    return builder;
}

From source file:com.github.benmanes.multiway.TransferPool.java

/** Creates the denormalized cache of resources based on the builder configuration. */
Cache<ResourceKey<K>, R> __makeCache(MultiwayPoolBuilder<? super K, ? super R> builder) {
    CacheBuilder<Object, Object> cacheBuilder = CacheBuilder.newBuilder();
    if (builder.maximumSize != MultiwayPoolBuilder.UNSET_INT) {
        cacheBuilder.maximumSize(builder.maximumSize);
    }/*w w w.  ja  va  2s .  co  m*/
    if (builder.maximumWeight != MultiwayPoolBuilder.UNSET_INT) {
        cacheBuilder.maximumWeight(builder.maximumWeight);
    }
    if (builder.weigher != null) {
        final Weigher<? super K, ? super R> weigher = builder.weigher;
        cacheBuilder.weigher(new Weigher<ResourceKey<K>, R>() {
            @Override
            public int weigh(ResourceKey<K> resourceKey, R resource) {
                return weigher.weigh(resourceKey.getKey(), resource);
            }
        });
    }
    if (builder.expireAfterWriteNanos != MultiwayPoolBuilder.UNSET_INT) {
        cacheBuilder.expireAfterWrite(builder.expireAfterWriteNanos, TimeUnit.NANOSECONDS);
    }
    if (builder.ticker != null) {
        cacheBuilder.ticker(builder.ticker);
    }
    if (builder.recordStats) {
        cacheBuilder.recordStats();
    }
    cacheBuilder.concurrencyLevel(builder.getConcurrencyLevel());
    cacheBuilder.removalListener(new CacheRemovalListener());
    return cacheBuilder.build();
}

From source file:com.google.cloud.dataflow.sdk.runners.worker.WindmillStateCache.java

public WindmillStateCache() {
    final Weigher<Weighted, Weighted> weigher = Weighers.weightedKeysAndValues();

    stateCache = CacheBuilder.newBuilder().maximumWeight(100000000 /* 100 MB */).recordStats().weigher(weigher)
            .removalListener(new RemovalListener<StateId, StateCacheEntry>() {
                @Override/*from w  ww. j  av  a 2  s  . c o  m*/
                public void onRemoval(RemovalNotification<StateId, StateCacheEntry> removal) {
                    if (removal.getCause() != RemovalCause.REPLACED) {
                        displayedWeight -= weigher.weigh(removal.getKey(), removal.getValue());
                    }
                }
            }).build();
}

From source file:org.apache.beam.runners.dataflow.worker.WindmillStateCache.java

public WindmillStateCache() {
    final Weigher<Weighted, Weighted> weigher = Weighers.weightedKeysAndValues();

    stateCache = CacheBuilder.newBuilder().maximumWeight(100000000 /* 100 MB */).recordStats().weigher(weigher)
            .removalListener(removal -> {
                if (removal.getCause() != RemovalCause.REPLACED) {
                    synchronized (this) {
                        StateId id = (StateId) removal.getKey();
                        if (removal.getCause() != RemovalCause.EXPLICIT) {
                            // When we invalidate a key explicitly, we'll also update the keyIndex, so
                            // no need to do it here.
                            keyIndex.remove(id.getComputationKey(), id);
                        }//  w  w w. j  a  v  a  2 s.c om
                        displayedWeight -= weigher.weigh(id, removal.getValue());
                    }
                }
            }).build();
}