Initial commit
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
package com.afunx.ble.blelitelib.proxy.scheme;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public interface BleGattReconnectScheme {
|
||||
int addAndGetRetryCount();
|
||||
|
||||
void callDisconnectCallbackInstantly();
|
||||
|
||||
void clearRetryCount();
|
||||
|
||||
long getSleepTimestamp(int i);
|
||||
|
||||
void setDisconnectCallback(Runnable runnable, long j);
|
||||
|
||||
boolean tryAgain();
|
||||
}
|
@@ -0,0 +1,95 @@
|
||||
package com.afunx.ble.blelitelib.proxy.scheme;
|
||||
|
||||
import com.afunx.ble.blelitelib.log.BleLiteLog;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class BleGattReconnectSchemeDefaultImpl implements BleGattReconnectScheme {
|
||||
private static final String TAG = "BleGattReconnectSchemeDefaultImpl";
|
||||
private Runnable mDisconnectedCallback;
|
||||
private final AtomicInteger mCount = new AtomicInteger();
|
||||
private final Timer mTimer = new Timer();
|
||||
private TimerTask mTimerTask = null;
|
||||
private volatile long mTimeoutMilli = 0;
|
||||
private volatile boolean mTryAgain = true;
|
||||
|
||||
private synchronized void addTimerTask(long j) {
|
||||
BleLiteLog.i(TAG, "addTimerTask() delayMilli: " + j);
|
||||
this.mTimerTask = new TimerTask() { // from class: com.afunx.ble.blelitelib.proxy.scheme.BleGattReconnectSchemeDefaultImpl.1
|
||||
@Override // java.util.TimerTask, java.lang.Runnable
|
||||
public void run() {
|
||||
BleLiteLog.i(BleGattReconnectSchemeDefaultImpl.TAG, "addTimerTask() run()");
|
||||
BleGattReconnectSchemeDefaultImpl.this.mTryAgain = false;
|
||||
if (BleGattReconnectSchemeDefaultImpl.this.mDisconnectedCallback != null) {
|
||||
BleGattReconnectSchemeDefaultImpl.this.mDisconnectedCallback.run();
|
||||
}
|
||||
}
|
||||
};
|
||||
this.mTimer.schedule(this.mTimerTask, j);
|
||||
}
|
||||
|
||||
private synchronized boolean removeTimerTask() {
|
||||
BleLiteLog.i(TAG, "removeTimerTask()");
|
||||
if (this.mTimerTask == null) {
|
||||
this.mTryAgain = true;
|
||||
BleLiteLog.i(TAG, "removeTimerTask() mTryAgain = true");
|
||||
return false;
|
||||
}
|
||||
BleLiteLog.i(TAG, "removeTimerTask() cancel()");
|
||||
boolean cancel = this.mTimerTask.cancel();
|
||||
this.mTimerTask = null;
|
||||
return cancel;
|
||||
}
|
||||
|
||||
@Override // com.afunx.ble.blelitelib.proxy.scheme.BleGattReconnectScheme
|
||||
public int addAndGetRetryCount() {
|
||||
return this.mCount.addAndGet(1);
|
||||
}
|
||||
|
||||
@Override // com.afunx.ble.blelitelib.proxy.scheme.BleGattReconnectScheme
|
||||
public synchronized void callDisconnectCallbackInstantly() {
|
||||
BleLiteLog.i(TAG, "callDisconnectCallbackInstantly()");
|
||||
if (this.mTimerTask == null) {
|
||||
BleLiteLog.i(TAG, "callDisconnectCallbackInstantly() run()");
|
||||
if (this.mDisconnectedCallback != null) {
|
||||
this.mDisconnectedCallback.run();
|
||||
}
|
||||
} else if (removeTimerTask()) {
|
||||
BleLiteLog.i(TAG, "callDisconnectCallbackInstantly() run() for cancelled already");
|
||||
if (this.mDisconnectedCallback != null) {
|
||||
this.mDisconnectedCallback.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override // com.afunx.ble.blelitelib.proxy.scheme.BleGattReconnectScheme
|
||||
public void clearRetryCount() {
|
||||
removeTimerTask();
|
||||
this.mCount.set(0);
|
||||
}
|
||||
|
||||
@Override // com.afunx.ble.blelitelib.proxy.scheme.BleGattReconnectScheme
|
||||
public synchronized long getSleepTimestamp(int i) {
|
||||
BleLiteLog.i(TAG, "getSleepTimestamp() retryCount: " + i + ", mDisconnectedCallback: " + this.mDisconnectedCallback);
|
||||
if (i == 1 && this.mDisconnectedCallback != null) {
|
||||
addTimerTask(this.mTimeoutMilli);
|
||||
}
|
||||
return (2 << (i - 1)) * 1000;
|
||||
}
|
||||
|
||||
@Override // com.afunx.ble.blelitelib.proxy.scheme.BleGattReconnectScheme
|
||||
public synchronized void setDisconnectCallback(Runnable runnable, long j) {
|
||||
if (j < 0) {
|
||||
throw new IllegalArgumentException("timeoutMilli should >= 0");
|
||||
}
|
||||
this.mTimeoutMilli = j;
|
||||
this.mDisconnectedCallback = runnable;
|
||||
}
|
||||
|
||||
@Override // com.afunx.ble.blelitelib.proxy.scheme.BleGattReconnectScheme
|
||||
public boolean tryAgain() {
|
||||
return this.mTryAgain;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user