Merge "Add death monitor to AsyncChannel Server." into nyc-dev

am: 3054d01

* commit '3054d010327f8888919d7e0a97d63773dd015681':
  Add death monitor to AsyncChannel Server.

Change-Id: I949160fa577caf42c02fbd07270e20c56cc2803a
This commit is contained in:
Wei Wang
2016-03-31 23:22:47 +00:00
committed by android-build-merger

View File

@@ -402,7 +402,7 @@ public class AsyncChannel {
// Initialize destination fields
mDstMessenger = dstMessenger;
linkToDeathMonitor();
if (DBG) log("connected srcHandler to the dstMessenger X");
}
@@ -844,22 +844,30 @@ public class AsyncChannel {
msg.arg1 = status;
msg.obj = this;
msg.replyTo = mDstMessenger;
if (!linkToDeathMonitor()) {
// Override status to indicate failure
msg.arg1 = STATUS_BINDING_UNSUCCESSFUL;
}
/*
* Link to death only when bindService isn't used.
*/
if (mConnection == null) {
mSrcHandler.sendMessage(msg);
}
/**
* Link to death monitor for destination messenger. Returns true if successfully binded to
* destination messenger; false otherwise.
*/
private boolean linkToDeathMonitor() {
// Link to death only when bindService isn't used and not already linked.
if (mConnection == null && mDeathMonitor == null) {
mDeathMonitor = new DeathMonitor();
try {
mDstMessenger.getBinder().linkToDeath(mDeathMonitor, 0);
} catch (RemoteException e) {
mDeathMonitor = null;
// Override status to indicate failure
msg.arg1 = STATUS_BINDING_UNSUCCESSFUL;
return false;
}
}
mSrcHandler.sendMessage(msg);
return true;
}
/**