191 lines
7.9 KiB
Java
191 lines
7.9 KiB
Java
package com.google.firebase.remoteconfig.internal;
|
|
|
|
import android.content.SharedPreferences;
|
|
import com.google.firebase.remoteconfig.FirebaseRemoteConfigInfo;
|
|
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings;
|
|
import java.util.Date;
|
|
|
|
/* loaded from: classes3.dex */
|
|
public class ConfigMetadataClient {
|
|
private static final String BACKOFF_END_TIME_IN_MILLIS_KEY = "backoff_end_time_in_millis";
|
|
private static final String FETCH_TIMEOUT_IN_SECONDS_KEY = "fetch_timeout_in_seconds";
|
|
private static final String LAST_FETCH_ETAG_KEY = "last_fetch_etag";
|
|
private static final String LAST_FETCH_STATUS_KEY = "last_fetch_status";
|
|
public static final long LAST_FETCH_TIME_IN_MILLIS_NO_FETCH_YET = -1;
|
|
private static final String LAST_SUCCESSFUL_FETCH_TIME_IN_MILLIS_KEY = "last_fetch_time_in_millis";
|
|
private static final String LAST_TEMPLATE_VERSION = "last_template_version";
|
|
private static final String MINIMUM_FETCH_INTERVAL_IN_SECONDS_KEY = "minimum_fetch_interval_in_seconds";
|
|
private static final long NO_BACKOFF_TIME_IN_MILLIS = -1;
|
|
static final int NO_FAILED_FETCHES = 0;
|
|
static final int NO_FAILED_REALTIME_STREAMS = 0;
|
|
private static final String NUM_FAILED_FETCHES_KEY = "num_failed_fetches";
|
|
private static final String NUM_FAILED_REALTIME_STREAMS_KEY = "num_failed_realtime_streams";
|
|
private static final String REALTIME_BACKOFF_END_TIME_IN_MILLIS_KEY = "realtime_backoff_end_time_in_millis";
|
|
private final SharedPreferences frcMetadata;
|
|
static final Date LAST_FETCH_TIME_NO_FETCH_YET = new Date(-1);
|
|
static final Date NO_BACKOFF_TIME = new Date(-1);
|
|
private final Object frcInfoLock = new Object();
|
|
private final Object backoffMetadataLock = new Object();
|
|
private final Object realtimeBackoffMetadataLock = new Object();
|
|
|
|
/* loaded from: classes3.dex */
|
|
public static class BackoffMetadata {
|
|
private Date backoffEndTime;
|
|
private int numFailedFetches;
|
|
|
|
public BackoffMetadata(int i, Date date) {
|
|
this.numFailedFetches = i;
|
|
this.backoffEndTime = date;
|
|
}
|
|
|
|
public Date getBackoffEndTime() {
|
|
return this.backoffEndTime;
|
|
}
|
|
|
|
public int getNumFailedFetches() {
|
|
return this.numFailedFetches;
|
|
}
|
|
}
|
|
|
|
/* loaded from: classes3.dex */
|
|
public static class RealtimeBackoffMetadata {
|
|
private Date backoffEndTime;
|
|
private int numFailedStreams;
|
|
|
|
public RealtimeBackoffMetadata(int i, Date date) {
|
|
this.numFailedStreams = i;
|
|
this.backoffEndTime = date;
|
|
}
|
|
|
|
public Date getBackoffEndTime() {
|
|
return this.backoffEndTime;
|
|
}
|
|
|
|
public int getNumFailedStreams() {
|
|
return this.numFailedStreams;
|
|
}
|
|
}
|
|
|
|
public ConfigMetadataClient(SharedPreferences sharedPreferences) {
|
|
this.frcMetadata = sharedPreferences;
|
|
}
|
|
|
|
public void clear() {
|
|
synchronized (this.frcInfoLock) {
|
|
this.frcMetadata.edit().clear().commit();
|
|
}
|
|
}
|
|
|
|
public BackoffMetadata getBackoffMetadata() {
|
|
BackoffMetadata backoffMetadata;
|
|
synchronized (this.backoffMetadataLock) {
|
|
backoffMetadata = new BackoffMetadata(this.frcMetadata.getInt(NUM_FAILED_FETCHES_KEY, 0), new Date(this.frcMetadata.getLong(BACKOFF_END_TIME_IN_MILLIS_KEY, -1L)));
|
|
}
|
|
return backoffMetadata;
|
|
}
|
|
|
|
public long getFetchTimeoutInSeconds() {
|
|
return this.frcMetadata.getLong(FETCH_TIMEOUT_IN_SECONDS_KEY, 60L);
|
|
}
|
|
|
|
public FirebaseRemoteConfigInfo getInfo() {
|
|
FirebaseRemoteConfigInfoImpl build;
|
|
synchronized (this.frcInfoLock) {
|
|
long j4 = this.frcMetadata.getLong(LAST_SUCCESSFUL_FETCH_TIME_IN_MILLIS_KEY, -1L);
|
|
int i = this.frcMetadata.getInt(LAST_FETCH_STATUS_KEY, 0);
|
|
build = FirebaseRemoteConfigInfoImpl.newBuilder().withLastFetchStatus(i).withLastSuccessfulFetchTimeInMillis(j4).withConfigSettings(new FirebaseRemoteConfigSettings.Builder().setFetchTimeoutInSeconds(this.frcMetadata.getLong(FETCH_TIMEOUT_IN_SECONDS_KEY, 60L)).setMinimumFetchIntervalInSeconds(this.frcMetadata.getLong(MINIMUM_FETCH_INTERVAL_IN_SECONDS_KEY, ConfigFetchHandler.DEFAULT_MINIMUM_FETCH_INTERVAL_IN_SECONDS)).build()).build();
|
|
}
|
|
return build;
|
|
}
|
|
|
|
public String getLastFetchETag() {
|
|
return this.frcMetadata.getString(LAST_FETCH_ETAG_KEY, null);
|
|
}
|
|
|
|
public int getLastFetchStatus() {
|
|
return this.frcMetadata.getInt(LAST_FETCH_STATUS_KEY, 0);
|
|
}
|
|
|
|
public Date getLastSuccessfulFetchTime() {
|
|
return new Date(this.frcMetadata.getLong(LAST_SUCCESSFUL_FETCH_TIME_IN_MILLIS_KEY, -1L));
|
|
}
|
|
|
|
public long getLastTemplateVersion() {
|
|
return this.frcMetadata.getLong(LAST_TEMPLATE_VERSION, 0L);
|
|
}
|
|
|
|
public long getMinimumFetchIntervalInSeconds() {
|
|
return this.frcMetadata.getLong(MINIMUM_FETCH_INTERVAL_IN_SECONDS_KEY, ConfigFetchHandler.DEFAULT_MINIMUM_FETCH_INTERVAL_IN_SECONDS);
|
|
}
|
|
|
|
public RealtimeBackoffMetadata getRealtimeBackoffMetadata() {
|
|
RealtimeBackoffMetadata realtimeBackoffMetadata;
|
|
synchronized (this.realtimeBackoffMetadataLock) {
|
|
realtimeBackoffMetadata = new RealtimeBackoffMetadata(this.frcMetadata.getInt(NUM_FAILED_REALTIME_STREAMS_KEY, 0), new Date(this.frcMetadata.getLong(REALTIME_BACKOFF_END_TIME_IN_MILLIS_KEY, -1L)));
|
|
}
|
|
return realtimeBackoffMetadata;
|
|
}
|
|
|
|
public void resetBackoff() {
|
|
setBackoffMetadata(0, NO_BACKOFF_TIME);
|
|
}
|
|
|
|
public void resetRealtimeBackoff() {
|
|
setRealtimeBackoffMetadata(0, NO_BACKOFF_TIME);
|
|
}
|
|
|
|
public void setBackoffMetadata(int i, Date date) {
|
|
synchronized (this.backoffMetadataLock) {
|
|
this.frcMetadata.edit().putInt(NUM_FAILED_FETCHES_KEY, i).putLong(BACKOFF_END_TIME_IN_MILLIS_KEY, date.getTime()).apply();
|
|
}
|
|
}
|
|
|
|
public void setConfigSettings(FirebaseRemoteConfigSettings firebaseRemoteConfigSettings) {
|
|
synchronized (this.frcInfoLock) {
|
|
this.frcMetadata.edit().putLong(FETCH_TIMEOUT_IN_SECONDS_KEY, firebaseRemoteConfigSettings.getFetchTimeoutInSeconds()).putLong(MINIMUM_FETCH_INTERVAL_IN_SECONDS_KEY, firebaseRemoteConfigSettings.getMinimumFetchIntervalInSeconds()).commit();
|
|
}
|
|
}
|
|
|
|
public void setConfigSettingsWithoutWaitingOnDiskWrite(FirebaseRemoteConfigSettings firebaseRemoteConfigSettings) {
|
|
synchronized (this.frcInfoLock) {
|
|
this.frcMetadata.edit().putLong(FETCH_TIMEOUT_IN_SECONDS_KEY, firebaseRemoteConfigSettings.getFetchTimeoutInSeconds()).putLong(MINIMUM_FETCH_INTERVAL_IN_SECONDS_KEY, firebaseRemoteConfigSettings.getMinimumFetchIntervalInSeconds()).apply();
|
|
}
|
|
}
|
|
|
|
public void setLastFetchETag(String str) {
|
|
synchronized (this.frcInfoLock) {
|
|
this.frcMetadata.edit().putString(LAST_FETCH_ETAG_KEY, str).apply();
|
|
}
|
|
}
|
|
|
|
public void setLastTemplateVersion(long j4) {
|
|
synchronized (this.frcInfoLock) {
|
|
this.frcMetadata.edit().putLong(LAST_TEMPLATE_VERSION, j4).apply();
|
|
}
|
|
}
|
|
|
|
public void setRealtimeBackoffMetadata(int i, Date date) {
|
|
synchronized (this.realtimeBackoffMetadataLock) {
|
|
this.frcMetadata.edit().putInt(NUM_FAILED_REALTIME_STREAMS_KEY, i).putLong(REALTIME_BACKOFF_END_TIME_IN_MILLIS_KEY, date.getTime()).apply();
|
|
}
|
|
}
|
|
|
|
public void updateLastFetchAsFailed() {
|
|
synchronized (this.frcInfoLock) {
|
|
this.frcMetadata.edit().putInt(LAST_FETCH_STATUS_KEY, 1).apply();
|
|
}
|
|
}
|
|
|
|
public void updateLastFetchAsSuccessfulAt(Date date) {
|
|
synchronized (this.frcInfoLock) {
|
|
this.frcMetadata.edit().putInt(LAST_FETCH_STATUS_KEY, -1).putLong(LAST_SUCCESSFUL_FETCH_TIME_IN_MILLIS_KEY, date.getTime()).apply();
|
|
}
|
|
}
|
|
|
|
public void updateLastFetchAsThrottled() {
|
|
synchronized (this.frcInfoLock) {
|
|
this.frcMetadata.edit().putInt(LAST_FETCH_STATUS_KEY, 2).apply();
|
|
}
|
|
}
|
|
}
|