@Override public void handleWBO(CryptoRecord record) { workTracker.incrementOutstanding(); try { delegate.onFetchedRecord(record); } catch (Exception ex) { Logger.warn(LOG_TAG, "Got exception calling onFetchedRecord with WBO.", ex); // TODO: handle this better. throw new RuntimeException(ex); } finally { workTracker.decrementOutstanding(); } }
@Override public void handleRequestError(final Exception ex) { removeRequestFromPending(); Logger.warn(LOG_TAG, "Got request error.", ex); // When we're done processing other events, finish. workTracker.delayWorkItem( new Runnable() { @Override public void run() { Logger.debug(LOG_TAG, "Running onFetchFailed."); delegate.onFetchFailed(ex, null); } }); }
@Override public void handleRequestSuccess(SyncStorageResponse response) { Logger.debug(LOG_TAG, "Fetch done."); removeRequestFromPending(); final long normalizedTimestamp = getNormalizedTimestamp(response); Logger.debug(LOG_TAG, "Fetch completed. Timestamp is " + normalizedTimestamp); // When we're done processing other events, finish. workTracker.delayWorkItem( new Runnable() { @Override public void run() { Logger.debug(LOG_TAG, "Delayed onFetchCompleted running."); // TODO: verify number of returned records. delegate.onFetchCompleted(normalizedTimestamp); } }); }