package com.android.mms.transaction;
public class TransactionDataconnectionState {
public static final int TRANSACTION_STATE_PROCESSING = 11;
public static final int TRANSACTION_STATE_PENDING = 12;
public static final int TRANSACTION_STATE_IDLE = 10;
private static final int TRANSACTION_STARTING_TIME_OUT = 2*60*1000;
private int[] transcationState = new int[] { TRANSACTION_STATE_IDLE, TRANSACTION_STATE_IDLE };
private long[] transcationStartTime = new long[] { 0, 0 };
private static TransactionDataconnectionState transactionDataconnectionState = new TransactionDataconnectionState();
private TransactionDataconnectionState() {
super();
}
public static boolean isDataconnectionStartingTimeout(int phoneId) {
return (System.currentTimeMillis() - transactionDataconnectionState.transcationStartTime[phoneId]) > TRANSACTION_STARTING_TIME_OUT ;
}
synchronized public static int getDataconnectionState(int phoneId) {
int stateIndex = transactionDataconnectionState.getStateIndex(phoneId);
if (transactionDataconnectionState.transcationState[stateIndex] == TRANSACTION_STATE_PROCESSING) {
transactionDataconnectionState.transcationState[phoneId] = TRANSACTION_STATE_PENDING;
return TRANSACTION_STATE_PENDING;
} else {
transactionDataconnectionState.transcationState[phoneId] = TRANSACTION_STATE_PROCESSING;
if(transactionDataconnectionState.transcationStartTime[phoneId] == 0)
transactionDataconnectionState.transcationStartTime[phoneId] = System.currentTimeMillis();
return TRANSACTION_STATE_PROCESSING;
}
}
synchronized public static void setEndDataconnectionState(int phoneId) {
transactionDataconnectionState.transcationState[phoneId] = TransactionDataconnectionState.TRANSACTION_STATE_IDLE;
transactionDataconnectionState.transcationStartTime[phoneId] = 0;
}
private int getStateIndex(int phoneId) {
if (phoneId == 0) {
return 1;
} else {
return 0;
}
}
}