Merge "SipService: deliver connectivity change to all sessions." into gingerbread
This commit is contained in:
committed by
Android (Google) Code Review
commit
4565933f03
@@ -404,6 +404,7 @@ public final class SipService extends ISipService.Stub {
|
|||||||
|
|
||||||
public void onConnectivityChanged(boolean connected)
|
public void onConnectivityChanged(boolean connected)
|
||||||
throws SipException {
|
throws SipException {
|
||||||
|
mSipGroup.onConnectivityChanged();
|
||||||
if (connected) {
|
if (connected) {
|
||||||
resetGroup(mLocalIp);
|
resetGroup(mLocalIp);
|
||||||
if (mOpened) openToReceiveCalls();
|
if (mOpened) openToReceiveCalls();
|
||||||
|
|||||||
@@ -153,6 +153,13 @@ class SipSessionGroup implements SipListener {
|
|||||||
mSessionMap.clear();
|
mSessionMap.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
synchronized void onConnectivityChanged() {
|
||||||
|
for (SipSessionImpl s : mSessionMap.values()) {
|
||||||
|
s.onError(SipErrorCode.DATA_CONNECTION_LOST,
|
||||||
|
"data connection lost");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public SipProfile getLocalProfile() {
|
public SipProfile getLocalProfile() {
|
||||||
return mLocalProfile;
|
return mLocalProfile;
|
||||||
}
|
}
|
||||||
@@ -210,10 +217,10 @@ class SipSessionGroup implements SipListener {
|
|||||||
|
|
||||||
private synchronized SipSessionImpl getSipSession(EventObject event) {
|
private synchronized SipSessionImpl getSipSession(EventObject event) {
|
||||||
String key = SipHelper.getCallId(event);
|
String key = SipHelper.getCallId(event);
|
||||||
Log.d(TAG, " sesssion key from event: " + key);
|
Log.d(TAG, "sesssion key from event: " + key);
|
||||||
Log.d(TAG, " active sessions:");
|
Log.d(TAG, "active sessions:");
|
||||||
for (String k : mSessionMap.keySet()) {
|
for (String k : mSessionMap.keySet()) {
|
||||||
Log.d(TAG, " ..... '" + k + "': " + mSessionMap.get(k));
|
Log.d(TAG, " ..." + k + ": " + mSessionMap.get(k));
|
||||||
}
|
}
|
||||||
SipSessionImpl session = mSessionMap.get(key);
|
SipSessionImpl session = mSessionMap.get(key);
|
||||||
return ((session != null) ? session : mCallReceiverSession);
|
return ((session != null) ? session : mCallReceiverSession);
|
||||||
@@ -222,7 +229,7 @@ class SipSessionGroup implements SipListener {
|
|||||||
private synchronized void addSipSession(SipSessionImpl newSession) {
|
private synchronized void addSipSession(SipSessionImpl newSession) {
|
||||||
removeSipSession(newSession);
|
removeSipSession(newSession);
|
||||||
String key = newSession.getCallId();
|
String key = newSession.getCallId();
|
||||||
Log.d(TAG, " +++++ add a session with key: '" + key + "'");
|
Log.d(TAG, "+++ add a session with key: '" + key + "'");
|
||||||
mSessionMap.put(key, newSession);
|
mSessionMap.put(key, newSession);
|
||||||
for (String k : mSessionMap.keySet()) {
|
for (String k : mSessionMap.keySet()) {
|
||||||
Log.d(TAG, " ..... " + k + ": " + mSessionMap.get(k));
|
Log.d(TAG, " ..... " + k + ": " + mSessionMap.get(k));
|
||||||
@@ -998,7 +1005,8 @@ class SipSessionGroup implements SipListener {
|
|||||||
onRegistrationFailed(errorCode, message);
|
onRegistrationFailed(errorCode, message);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (mInCall) {
|
if ((errorCode != SipErrorCode.DATA_CONNECTION_LOST)
|
||||||
|
&& mInCall) {
|
||||||
fallbackToPreviousInCall(errorCode, message);
|
fallbackToPreviousInCall(errorCode, message);
|
||||||
} else {
|
} else {
|
||||||
endCallOnError(errorCode, message);
|
endCallOnError(errorCode, message);
|
||||||
|
|||||||
@@ -635,9 +635,9 @@ public class SipPhone extends SipPhoneBase {
|
|||||||
@Override
|
@Override
|
||||||
protected void onError(DisconnectCause cause) {
|
protected void onError(DisconnectCause cause) {
|
||||||
Log.w(LOG_TAG, "SIP error: " + cause);
|
Log.w(LOG_TAG, "SIP error: " + cause);
|
||||||
if (mSipAudioCall.isInCall()) {
|
if (mSipAudioCall.isInCall()
|
||||||
// Don't end the call when in call.
|
&& (cause != DisconnectCause.LOST_SIGNAL)) {
|
||||||
// TODO: how to deliver the error to PhoneApp
|
// Don't end the call when in a call.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -829,6 +829,9 @@ public class SipPhone extends SipPhoneBase {
|
|||||||
case TRANSACTION_TERMINTED:
|
case TRANSACTION_TERMINTED:
|
||||||
onError(Connection.DisconnectCause.TIMED_OUT);
|
onError(Connection.DisconnectCause.TIMED_OUT);
|
||||||
break;
|
break;
|
||||||
|
case DATA_CONNECTION_LOST:
|
||||||
|
onError(Connection.DisconnectCause.LOST_SIGNAL);
|
||||||
|
break;
|
||||||
case INVALID_CREDENTIALS:
|
case INVALID_CREDENTIALS:
|
||||||
onError(Connection.DisconnectCause.INVALID_CREDENTIALS);
|
onError(Connection.DisconnectCause.INVALID_CREDENTIALS);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -47,5 +47,8 @@ public enum SipErrorCode {
|
|||||||
INVALID_CREDENTIALS,
|
INVALID_CREDENTIALS,
|
||||||
|
|
||||||
/** The client is in a transaction and cannot initiate a new one. */
|
/** The client is in a transaction and cannot initiate a new one. */
|
||||||
IN_PROGRESS;
|
IN_PROGRESS,
|
||||||
|
|
||||||
|
/** When data connection is lost. */
|
||||||
|
DATA_CONNECTION_LOST;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user