From a95bd538e244b831e2480f084bbaa54eace3debc Mon Sep 17 00:00:00 2001 From: Vincent Poirier Date: Wed, 26 Dec 2018 14:09:35 -0500 Subject: [PATCH] Add maximumInFlightRequestsFurationInSeconds field in MemoryPolicy to control the duration of the Inflight Debouncer --- .../external/store3/base/impl/CacheFactory.java | 2 +- .../external/store3/base/impl/MemoryPolicy.java | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/store/src/main/java/com/nytimes/android/external/store3/base/impl/CacheFactory.java b/store/src/main/java/com/nytimes/android/external/store3/base/impl/CacheFactory.java index 0abbc980..95ca4553 100644 --- a/store/src/main/java/com/nytimes/android/external/store3/base/impl/CacheFactory.java +++ b/store/src/main/java/com/nytimes/android/external/store3/base/impl/CacheFactory.java @@ -37,7 +37,7 @@ private static Cache createBaseInFlighter(MemoryPolicy long expireAfterToSeconds = memoryPolicy == null ? StoreDefaults.getCacheTTLTimeUnit() .toSeconds(StoreDefaults.getCacheTTL()) : memoryPolicy.getExpireAfterTimeUnit().toSeconds(memoryPolicy.getExpireAfterWrite()); - long maximumInFlightRequestsDuration = TimeUnit.MINUTES.toSeconds(1); + long maximumInFlightRequestsDuration = memoryPolicy == null ? TimeUnit.MINUTES.toSeconds(1) : memoryPolicy.getMaximumInFlightRequestsDurationInSeconds(); if (expireAfterToSeconds > maximumInFlightRequestsDuration) { return CacheBuilder diff --git a/store/src/main/java/com/nytimes/android/external/store3/base/impl/MemoryPolicy.java b/store/src/main/java/com/nytimes/android/external/store3/base/impl/MemoryPolicy.java index d10812be..8b89b8d8 100644 --- a/store/src/main/java/com/nytimes/android/external/store3/base/impl/MemoryPolicy.java +++ b/store/src/main/java/com/nytimes/android/external/store3/base/impl/MemoryPolicy.java @@ -24,12 +24,14 @@ public class MemoryPolicy { private final long expireAfterAccess; private final TimeUnit expireAfterTimeUnit; private final long maxSize; + private final long maximumInFlightRequestsDurationInSeconds; - MemoryPolicy(long expireAfterWrite, long expireAfterAccess, TimeUnit expireAfterTimeUnit, long maxSize) { + MemoryPolicy(long expireAfterWrite, long expireAfterAccess, TimeUnit expireAfterTimeUnit, long maxSize, long maximumInFlightRequestsDurationInSeconds) { this.expireAfterWrite = expireAfterWrite; this.expireAfterAccess = expireAfterAccess; this.expireAfterTimeUnit = expireAfterTimeUnit; this.maxSize = maxSize; + this.maximumInFlightRequestsDurationInSeconds = maximumInFlightRequestsDurationInSeconds; } public static MemoryPolicyBuilder builder() { @@ -63,6 +65,10 @@ public long getMaxSize() { return maxSize; } + public long getMaximumInFlightRequestsDurationInSeconds() { + return maximumInFlightRequestsDurationInSeconds; + } + /** * @deprecated Use {@link MemoryPolicy#isDefaultWritePolicy()} or {@link MemoryPolicy#isDefaultAccessPolicy()}. */ @@ -100,6 +106,7 @@ public static class MemoryPolicyBuilder { private long expireAfterAccess = DEFAULT_POLICY; private TimeUnit expireAfterTimeUnit = TimeUnit.SECONDS; private long maxSize = -1; + private long maximumInFlightRequestsFurationInSeconds = 60; /** * @deprecated Use {@link MemoryPolicyBuilder#setExpireAfterWrite(long)} or @@ -136,8 +143,13 @@ public MemoryPolicyBuilder setMemorySize(long maxSize) { return this; } + public MemoryPolicyBuilder setMaximumInFlightRequestsDurationInSeconds(long maximumInFlightRequestsDurationInSeconds) { + this.maximumInFlightRequestsFurationInSeconds = maximumInFlightRequestsDurationInSeconds; + return this; + } + public MemoryPolicy build() { - return new MemoryPolicy(expireAfterWrite, expireAfterAccess, expireAfterTimeUnit, maxSize); + return new MemoryPolicy(expireAfterWrite, expireAfterAccess, expireAfterTimeUnit, maxSize, maximumInFlightRequestsFurationInSeconds); } } }