Grant that same result is never processed twice by the same listener (one through callback, one through getResult)

This commit is contained in:
masensio 2014-04-03 17:24:03 +02:00
parent b017073e96
commit 40f5eb6de6

View file

@ -443,12 +443,11 @@ public class OperationsService extends Service {
} finally {
synchronized(mPendingOperations) {
mPendingOperations.poll();
mOperationResults.put(mCurrentOperation.hashCode(), result);
}
}
//sendBroadcastOperationFinished(mLastTarget, mCurrentOperation, result);
callbackOperationListeners(mLastTarget, mCurrentOperation, result);
dispatchOperationListeners(mLastTarget, mCurrentOperation, result);
}
}
@ -506,7 +505,7 @@ public class OperationsService extends Service {
* @param operation Finished operation.
* @param result Result of the operation.
*/
private void callbackOperationListeners(
private void dispatchOperationListeners(
Target target, final RemoteOperation operation, final RemoteOperationResult result) {
int count = 0;
Iterator<OnRemoteOperationListener> listeners = mBinder.mBoundListeners.keySet().iterator();
@ -523,6 +522,9 @@ public class OperationsService extends Service {
count += 1;
}
}
if (count == 0) {
mOperationResults.put(operation.hashCode(), result);
}
Log_OC.d(TAG, "Called " + count + " listeners");
}