Do not merge: Remove mRetryMgr and directly use DataConnection retry mgr.
DataConnection now wraps its retry manager instead of exporting it. Change-Id: Ibda6a235430b8ec51d1518c2956de71f964e3f39
This commit is contained in:
@@ -219,10 +219,8 @@ public abstract class DataConnection extends HierarchicalStateMachine {
|
||||
protected static final int EVENT_LOG_BAD_DNS_ADDRESS = 50100;
|
||||
|
||||
//***** Member Variables
|
||||
protected int mId;
|
||||
protected int mTag;
|
||||
protected PhoneBase phone;
|
||||
protected RetryManager mRetryMgr;
|
||||
protected int cid;
|
||||
protected LinkProperties mLinkProperties = new LinkProperties();
|
||||
protected LinkCapabilities mCapabilities = new LinkCapabilities();
|
||||
@@ -244,10 +242,11 @@ public abstract class DataConnection extends HierarchicalStateMachine {
|
||||
|
||||
|
||||
//***** Constructor
|
||||
protected DataConnection(PhoneBase phone, String name, RetryManager rm) {
|
||||
protected DataConnection(PhoneBase phone, String name, int id, RetryManager rm) {
|
||||
super(name);
|
||||
if (DBG) log("DataConnection constructor E");
|
||||
this.phone = phone;
|
||||
mId = id;
|
||||
mRetryMgr = rm;
|
||||
this.cid = -1;
|
||||
clearSettings();
|
||||
@@ -342,10 +341,88 @@ public abstract class DataConnection extends HierarchicalStateMachine {
|
||||
clearSettings();
|
||||
}
|
||||
|
||||
public RetryManager getRetryMgr() {
|
||||
return mRetryMgr;
|
||||
/*
|
||||
* **************************************************************************
|
||||
* Begin Members and methods owned by DataConnectionTracker but stored
|
||||
* in a DataConnection because there is one per connection.
|
||||
* **************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
* The id is owned by DataConnectionTracker.
|
||||
*/
|
||||
private int mId;
|
||||
|
||||
/**
|
||||
* Get the DataConnection ID
|
||||
*/
|
||||
public int getDataConnectionId() {
|
||||
return mId;
|
||||
}
|
||||
|
||||
/*
|
||||
* The retry manager is currently owned by the DataConnectionTracker but is stored
|
||||
* in the DataConnection because there is one per connection. These methods
|
||||
* should only be used by the DataConnectionTracker although someday the retrying
|
||||
* maybe managed by the DataConnection itself and these methods could disappear.
|
||||
*/
|
||||
private RetryManager mRetryMgr;
|
||||
|
||||
/**
|
||||
* @return retry manager retryCount
|
||||
*/
|
||||
public int getRetryCount() {
|
||||
return mRetryMgr.getRetryCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return retry manager retryTimer
|
||||
*/
|
||||
public int getRetryTimer() {
|
||||
return mRetryMgr.getRetryTimer();
|
||||
}
|
||||
|
||||
/**
|
||||
* increaseRetryCount of retry manager
|
||||
*/
|
||||
public void increaseRetryCount() {
|
||||
mRetryMgr.increaseRetryCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return retry manager isRetryNeeded
|
||||
*/
|
||||
public boolean isRetryNeeded() {
|
||||
return mRetryMgr.isRetryNeeded();
|
||||
}
|
||||
|
||||
/**
|
||||
* resetRetryCount of retry manager
|
||||
*/
|
||||
public void resetRetryCount() {
|
||||
mRetryMgr.resetRetryCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* set retryForeverUsingLasttimeout of retry manager
|
||||
*/
|
||||
public void retryForeverUsingLastTimeout() {
|
||||
mRetryMgr.retryForeverUsingLastTimeout();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return retry manager isRetryForever
|
||||
*/
|
||||
public boolean isRetryForever() {
|
||||
return mRetryMgr.isRetryForever();
|
||||
}
|
||||
|
||||
/*
|
||||
* **************************************************************************
|
||||
* End members owned by DataConnectionTracker
|
||||
* **************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* Clear all settings called when entering mInactiveState.
|
||||
*/
|
||||
@@ -963,13 +1040,6 @@ public abstract class DataConnection extends HierarchicalStateMachine {
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the DataConnection ID
|
||||
*/
|
||||
public int getDataConnectionId() {
|
||||
return mId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the LinkProperties for the connection.
|
||||
*
|
||||
|
||||
@@ -211,9 +211,6 @@ public abstract class DataConnectionTracker extends Handler {
|
||||
protected int mNoRecvPollCount = 0;
|
||||
protected boolean mNetStatPollEnabled = false;
|
||||
|
||||
/** Manage the behavior of data retry after failure (TODO: One per connection in the future?) */
|
||||
protected RetryManager mRetryMgr = new RetryManager();
|
||||
|
||||
// wifi connection status will be updated by sticky intent
|
||||
protected boolean mIsWifiConnected = false;
|
||||
|
||||
@@ -416,7 +413,7 @@ public abstract class DataConnectionTracker extends Handler {
|
||||
Settings.Secure.DATA_ROAMING, enabled ? 1 : 0);
|
||||
if (mPhone.getServiceState().getRoaming()) {
|
||||
if (enabled) {
|
||||
mRetryMgr.resetRetryCount();
|
||||
resetAllRetryCounts();
|
||||
}
|
||||
sendMessage(obtainMessage(EVENT_ROAMING_ON));
|
||||
}
|
||||
@@ -468,7 +465,7 @@ public abstract class DataConnectionTracker extends Handler {
|
||||
|
||||
case EVENT_ROAMING_OFF:
|
||||
if (getDataOnRoamingEnabled() == false) {
|
||||
mRetryMgr.resetRetryCount();
|
||||
resetAllRetryCounts();
|
||||
}
|
||||
onRoamingOff();
|
||||
break;
|
||||
@@ -902,7 +899,7 @@ public abstract class DataConnectionTracker extends Handler {
|
||||
}
|
||||
if (prevEnabled != getAnyDataEnabled()) {
|
||||
if (!prevEnabled) {
|
||||
mRetryMgr.resetRetryCount();
|
||||
resetAllRetryCounts();
|
||||
onTrySetupData(Phone.REASON_DATA_ENABLED);
|
||||
} else {
|
||||
cleanUpAllConnections();
|
||||
@@ -936,7 +933,7 @@ public abstract class DataConnectionTracker extends Handler {
|
||||
Settings.Secure.MOBILE_DATA, enable ? 1 : 0);
|
||||
if (prevEnabled != getAnyDataEnabled()) {
|
||||
if (!prevEnabled) {
|
||||
mRetryMgr.resetRetryCount();
|
||||
resetAllRetryCounts();
|
||||
onTrySetupData(Phone.REASON_DATA_ENABLED);
|
||||
} else {
|
||||
onCleanUpConnection(true, APN_DEFAULT_ID, Phone.REASON_DATA_DISABLED);
|
||||
@@ -944,4 +941,10 @@ public abstract class DataConnectionTracker extends Handler {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void resetAllRetryCounts() {
|
||||
for (DataConnection dc : mDataConnections.values()) {
|
||||
dc.resetRetryCount();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,8 +33,8 @@ public class CdmaDataConnection extends DataConnection {
|
||||
private static final String LOG_TAG = "CDMA";
|
||||
|
||||
// ***** Constructor
|
||||
private CdmaDataConnection(CDMAPhone phone, String name, RetryManager rm) {
|
||||
super(phone, name, rm);
|
||||
private CdmaDataConnection(CDMAPhone phone, String name, int id, RetryManager rm) {
|
||||
super(phone, name, id, rm);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -49,11 +49,10 @@ public class CdmaDataConnection extends DataConnection {
|
||||
synchronized (mCountLock) {
|
||||
mCount += 1;
|
||||
}
|
||||
CdmaDataConnection cdmaDc = new CdmaDataConnection(phone,
|
||||
"CdmaDataConnection-" + mCount, rm);
|
||||
CdmaDataConnection cdmaDc = new CdmaDataConnection(phone, "CdmaDataConnection-" + mCount,
|
||||
id, rm);
|
||||
cdmaDc.start();
|
||||
if (DBG) cdmaDc.log("Made " + cdmaDc.getName());
|
||||
cdmaDc.mId = id;
|
||||
return cdmaDc;
|
||||
}
|
||||
|
||||
|
||||
@@ -328,7 +328,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
||||
setState(State.CONNECTED);
|
||||
notifyDataConnection(reason);
|
||||
startNetStatPoll();
|
||||
mRetryMgr.resetRetryCount();
|
||||
mDataConnections.get(0).resetRetryCount();
|
||||
}
|
||||
|
||||
private void resetPollStats() {
|
||||
@@ -478,7 +478,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
||||
* at the last time until the state is changed.
|
||||
* TODO: Make this configurable?
|
||||
*/
|
||||
int nextReconnectDelay = mRetryMgr.getRetryTimer();
|
||||
int nextReconnectDelay = mDataConnections.get(0).getRetryTimer();
|
||||
log("Data Connection activate failed. Scheduling next attempt for "
|
||||
+ (nextReconnectDelay / 1000) + "s");
|
||||
|
||||
@@ -492,7 +492,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
||||
SystemClock.elapsedRealtime() + nextReconnectDelay,
|
||||
mReconnectIntent);
|
||||
|
||||
mRetryMgr.increaseRetryCount();
|
||||
mDataConnections.get(0).increaseRetryCount();
|
||||
|
||||
if (!shouldPostNotification(lastFailCauseCode)) {
|
||||
log("NOT Posting Data Connection Unavailable notification "
|
||||
@@ -593,7 +593,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
||||
*/
|
||||
@Override
|
||||
protected void onRadioOffOrNotAvailable() {
|
||||
mRetryMgr.resetRetryCount();
|
||||
mDataConnections.get(0).resetRetryCount();
|
||||
|
||||
if (mPhone.getSimulatedRadioControl() != null) {
|
||||
// Assume data is connected on the simulator
|
||||
@@ -708,7 +708,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
||||
}
|
||||
notifyDataAvailability(Phone.REASON_VOICE_CALL_ENDED);
|
||||
} else {
|
||||
mRetryMgr.resetRetryCount();
|
||||
mDataConnections.get(0).resetRetryCount();
|
||||
// in case data setup was attempted when we were on a voice call
|
||||
trySetupData(Phone.REASON_VOICE_CALL_ENDED);
|
||||
}
|
||||
@@ -730,7 +730,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
||||
CdmaDataConnection dataConn;
|
||||
|
||||
/** TODO: Use one retry manager for all connections for now */
|
||||
RetryManager rm = mRetryMgr;
|
||||
RetryManager rm = new RetryManager();
|
||||
if (!rm.configure(SystemProperties.get("ro.cdma.data_retry_config"))) {
|
||||
if (!rm.configure(DEFAULT_DATA_RETRY_CONFIG)) {
|
||||
// Should never happen, log an error and default to a simple linear sequence.
|
||||
@@ -761,7 +761,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
||||
} else {
|
||||
if (mState == State.FAILED) {
|
||||
cleanUpConnection(false, Phone.REASON_CDMA_DATA_DETACHED);
|
||||
mRetryMgr.resetRetryCount();
|
||||
mDataConnections.get(0).resetRetryCount();
|
||||
|
||||
CdmaCellLocation loc = (CdmaCellLocation)(mPhone.getCellLocation());
|
||||
EventLog.writeEvent(EventLogTags.CDMA_DATA_SETUP_FAILED,
|
||||
@@ -779,7 +779,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
||||
switch (otaPrivision[0]) {
|
||||
case Phone.CDMA_OTA_PROVISION_STATUS_COMMITTED:
|
||||
case Phone.CDMA_OTA_PROVISION_STATUS_OTAPA_STOPPED:
|
||||
mRetryMgr.resetRetryCount();
|
||||
mDataConnections.get(0).resetRetryCount();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -41,8 +41,8 @@ public class GsmDataConnection extends DataConnection {
|
||||
protected int mProfileId = RILConstants.DATA_PROFILE_DEFAULT;
|
||||
protected String mActiveApnType = Phone.APN_TYPE_DEFAULT;
|
||||
//***** Constructor
|
||||
private GsmDataConnection(PhoneBase phone, String name, RetryManager rm) {
|
||||
super(phone, name, rm);
|
||||
private GsmDataConnection(PhoneBase phone, String name, int id, RetryManager rm) {
|
||||
super(phone, name, id, rm);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -57,11 +57,10 @@ public class GsmDataConnection extends DataConnection {
|
||||
synchronized (mCountLock) {
|
||||
mCount += 1;
|
||||
}
|
||||
GsmDataConnection gsmDc = new GsmDataConnection(phone, "GsmDataConnection-" + mCount, rm);
|
||||
GsmDataConnection gsmDc = new GsmDataConnection(phone, "GsmDataConnection-" + mCount,
|
||||
id, rm);
|
||||
gsmDc.start();
|
||||
if (DBG) gsmDc.log("Made " + gsmDc.getName());
|
||||
gsmDc.mId = id;
|
||||
gsmDc.mRetryMgr = rm;
|
||||
return gsmDc;
|
||||
}
|
||||
|
||||
|
||||
@@ -546,7 +546,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
||||
ApnContext defaultApnContext = mApnContexts.get(Phone.APN_TYPE_DEFAULT);
|
||||
if (defaultApnContext.getState() == State.FAILED) {
|
||||
cleanUpConnection(false, defaultApnContext);
|
||||
mRetryMgr.resetRetryCount();
|
||||
defaultApnContext.getDataConnection().resetRetryCount();
|
||||
}
|
||||
trySetupData(Phone.REASON_GPRS_ATTACHED, Phone.APN_TYPE_DEFAULT);
|
||||
}
|
||||
@@ -934,7 +934,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
||||
cleanUpAllConnections(isConnected, Phone.REASON_APN_CHANGED);
|
||||
if (!isConnected) {
|
||||
// TODO: Won't work for multiple connections!!!!
|
||||
mRetryMgr.resetRetryCount();
|
||||
defaultApnContext.getDataConnection().resetRetryCount();
|
||||
defaultApnContext.setReason(Phone.REASON_APN_CHANGED);
|
||||
trySetupData(defaultApnContext);
|
||||
}
|
||||
@@ -1032,7 +1032,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
||||
mPhone.notifyDataConnection(apnContext.getReason(), apnContext.getApnType());
|
||||
startNetStatPoll();
|
||||
// reset reconnect timer
|
||||
mRetryMgr.resetRetryCount();
|
||||
apnContext.getDataConnection().resetRetryCount();
|
||||
}
|
||||
|
||||
// TODO: For multiple Active APNs not exactly sure how to do this.
|
||||
@@ -1233,7 +1233,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
||||
return;
|
||||
}
|
||||
if (apnContext.getState() == State.FAILED) {
|
||||
if (!mRetryMgr.isRetryNeeded()) {
|
||||
if (!apnContext.getDataConnection().isRetryNeeded()) {
|
||||
if (!apnContext.getApnType().equals(Phone.APN_TYPE_DEFAULT)){
|
||||
// if no more retries on a secondary APN attempt, tell the world and revert.
|
||||
notifyDataConnection(Phone.REASON_APN_FAILED);
|
||||
@@ -1241,18 +1241,18 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
||||
}
|
||||
if (mReregisterOnReconnectFailure) {
|
||||
// We've re-registerd once now just retry forever.
|
||||
mRetryMgr.retryForeverUsingLastTimeout();
|
||||
apnContext.getDataConnection().retryForeverUsingLastTimeout();
|
||||
} else {
|
||||
// Try to Re-register to the network.
|
||||
log("PDP activate failed, Reregistering to the network");
|
||||
mReregisterOnReconnectFailure = true;
|
||||
mPhone.getServiceStateTracker().reRegisterNetwork(null);
|
||||
mRetryMgr.resetRetryCount();
|
||||
apnContext.getDataConnection().resetRetryCount();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
int nextReconnectDelay = mRetryMgr.getRetryTimer();
|
||||
int nextReconnectDelay = apnContext.getDataConnection().getRetryTimer();
|
||||
log("PDP activate failed. Scheduling next attempt for "
|
||||
+ (nextReconnectDelay / 1000) + "s");
|
||||
|
||||
@@ -1268,7 +1268,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
||||
SystemClock.elapsedRealtime() + nextReconnectDelay,
|
||||
apnContext.getReconnectIntent());
|
||||
|
||||
mRetryMgr.increaseRetryCount();
|
||||
apnContext.getDataConnection().increaseRetryCount();
|
||||
|
||||
if (!shouldPostNotification(lastFailCauseCode)) {
|
||||
Log.d(LOG_TAG, "NOT Posting GPRS Unavailable notification "
|
||||
@@ -1308,14 +1308,12 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
||||
if (apnContext.getApnType().equals(Phone.APN_TYPE_DEFAULT)) {
|
||||
log("onEnableNewApn default type");
|
||||
ApnContext defaultApnContext = mApnContexts.get(Phone.APN_TYPE_DEFAULT);
|
||||
mRetryMgr = defaultApnContext.getDataConnection().getRetryMgr();
|
||||
mRetryMgr.resetRetryCount();
|
||||
defaultApnContext.getDataConnection().resetRetryCount();
|
||||
} else if (mApnToDataConnectionId.get(apnContext.getApnType()) == null) {
|
||||
log("onEnableNewApn ApnType=" + apnContext.getApnType() +
|
||||
" missing, make a new connection");
|
||||
int id = createDataConnection(apnContext.getApnType());
|
||||
mRetryMgr = mDataConnections.get(id).getRetryMgr();
|
||||
mRetryMgr.resetRetryCount();
|
||||
mDataConnections.get(id).resetRetryCount();
|
||||
} else {
|
||||
log("oneEnableNewApn connection already exists, nothing to setup");
|
||||
}
|
||||
@@ -1378,7 +1376,10 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
||||
protected void onRadioOffOrNotAvailable() {
|
||||
// Make sure our reconnect delay starts at the initial value
|
||||
// next time the radio comes on
|
||||
mRetryMgr.resetRetryCount();
|
||||
|
||||
for (DataConnection dc : mDataConnections.values()) {
|
||||
dc.resetRetryCount();
|
||||
}
|
||||
mReregisterOnReconnectFailure = false;
|
||||
|
||||
if (mPhone.getSimulatedRadioControl() != null) {
|
||||
@@ -1568,7 +1569,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
||||
}
|
||||
} else {
|
||||
// reset reconnect timer
|
||||
mRetryMgr.resetRetryCount();
|
||||
ApnContext defaultApnContext = mApnContexts.get(Phone.APN_TYPE_DEFAULT);
|
||||
defaultApnContext.getDataConnection().resetRetryCount();
|
||||
mReregisterOnReconnectFailure = false;
|
||||
// in case data setup was attempted when we were on a voice call
|
||||
trySetupData(Phone.REASON_VOICE_CALL_ENDED, Phone.APN_TYPE_DEFAULT);
|
||||
@@ -1872,7 +1874,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
||||
// TODO: Should all PDN states be checked to fail?
|
||||
if (mState == State.FAILED) {
|
||||
cleanUpAllConnections(false, Phone.REASON_PS_RESTRICT_ENABLED);
|
||||
mRetryMgr.resetRetryCount();
|
||||
resetAllRetryCounts();
|
||||
mReregisterOnReconnectFailure = false;
|
||||
}
|
||||
trySetupData(Phone.REASON_PS_RESTRICT_ENABLED, Phone.APN_TYPE_DEFAULT);
|
||||
|
||||
Reference in New Issue
Block a user