List of usage examples for com.google.common.cache Weigher weigh
int weigh(K key, V value);
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(); }