wrap to OnSubscribeRefCountWithCacheTime

This commit is contained in:
Anton Domnikov 2017-03-10 19:51:04 +03:00
parent c6c414a2a0
commit bab4e718f6
1 changed files with 12 additions and 3 deletions

View File

@ -23,9 +23,11 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import ru.touchin.roboswag.core.log.LcGroup; import ru.touchin.roboswag.core.log.LcGroup;
import ru.touchin.roboswag.core.observables.ObservableResult; import ru.touchin.roboswag.core.observables.ObservableResult;
import ru.touchin.roboswag.core.observables.OnSubscribeRefCountWithCacheTime;
import ru.touchin.roboswag.core.observables.RxUtils; import ru.touchin.roboswag.core.observables.RxUtils;
import ru.touchin.roboswag.core.observables.storable.builders.MigratableStorableBuilder; import ru.touchin.roboswag.core.observables.storable.builders.MigratableStorableBuilder;
import ru.touchin.roboswag.core.observables.storable.builders.NonNullStorableBuilder; import ru.touchin.roboswag.core.observables.storable.builders.NonNullStorableBuilder;
@ -56,6 +58,8 @@ public class Storable<TKey, TObject, TStoreObject> {
public static final LcGroup STORABLE_LC_GROUP = new LcGroup("STORABLE"); public static final LcGroup STORABLE_LC_GROUP = new LcGroup("STORABLE");
private static final long CACHE_TIME = TimeUnit.SECONDS.toMillis(5);
@NonNull @NonNull
private final TKey key; private final TKey key;
@NonNull @NonNull
@ -155,7 +159,9 @@ public class Storable<TKey, TObject, TStoreObject> {
.subscribeOn(storeScheduler) .subscribeOn(storeScheduler)
.concatWith(newStoreValueEvent) .concatWith(newStoreValueEvent)
.map(storeObject -> returnDefaultValueIfNull(storeObject, defaultValue)); .map(storeObject -> returnDefaultValueIfNull(storeObject, defaultValue));
return observeStrategy == ObserveStrategy.CACHE_STORE_VALUE ? result.replay(1).refCount() : result; return observeStrategy == ObserveStrategy.CACHE_STORE_VALUE
? Observable.create(new OnSubscribeRefCountWithCacheTime<>(result.replay(1), CACHE_TIME, TimeUnit.MILLISECONDS))
: result;
} }
@NonNull @NonNull
@ -176,7 +182,9 @@ public class Storable<TKey, TObject, TStoreObject> {
}) })
.subscribeOn(storeScheduler); .subscribeOn(storeScheduler);
return observeStrategy == ObserveStrategy.CACHE_ACTUAL_VALUE ? result.replay(1).refCount() : result; return observeStrategy == ObserveStrategy.CACHE_ACTUAL_VALUE
? Observable.create(new OnSubscribeRefCountWithCacheTime<>(result.replay(1), CACHE_TIME, TimeUnit.MILLISECONDS))
: result;
} }
/** /**
@ -254,7 +262,8 @@ public class Storable<TKey, TObject, TStoreObject> {
} catch (final RuntimeException throwable) { } catch (final RuntimeException throwable) {
STORABLE_LC_GROUP.assertion(throwable); STORABLE_LC_GROUP.assertion(throwable);
} }
}); })
.subscribeOn(storeScheduler);
}); });
} }