private void delegateFetch()

in imagepipeline/src/main/java/com/facebook/imagepipeline/producers/PriorityNetworkFetcher.java [370:428]


  private void delegateFetch(
      final PriorityNetworkFetcher.PriorityFetchState<FETCH_STATE> fetchState) {
    try {
      NetworkFetcher.Callback callbackWrapper =
          new NetworkFetcher.Callback() {
            @Override
            public void onResponse(InputStream response, int responseLength) throws IOException {
              final Callback callback = fetchState.callback;
              if (callback != null) {
                callback.onResponse(response, responseLength);
              }
            }

            @Override
            public void onFailure(Throwable throwable) {
              if (shouldRetry(
                  throwable,
                  fetchState.attemptCount,
                  maxConnectAttemptCount,
                  maxAttemptCount,
                  retryLowPriAll,
                  retryLowPriUnknownHostException,
                  retryLowPriConnectionException,
                  fetchState.getContext().getPriority())) {
                retry(fetchState);
                return;
              }

              final boolean shouldRequeue =
                  maxNumberOfRequeue == INFINITE_REQUEUE
                      || fetchState.requeueCount < maxNumberOfRequeue;
              if (shouldRequeue
                  && !(nonRecoverableExceptionPreventsRequeue
                      && throwable instanceof PriorityNetworkFetcher.NonrecoverableException)) {
                requeue(fetchState);
              } else {
                removeFromQueue(fetchState, "FAIL");
                final Callback callback = fetchState.callback;
                if (callback != null) {
                  callback.onFailure(throwable);
                }
              }
            }

            @Override
            public void onCancellation() {
              removeFromQueue(fetchState, "CANCEL");
              final Callback callback = fetchState.callback;
              if (callback != null) {
                callback.onCancellation();
              }
            }
          };
      fetchState.attemptCount++;
      mDelegate.fetch(fetchState.delegatedState, callbackWrapper);
    } catch (Exception e) {
      removeFromQueue(fetchState, "FAIL");
    }
  }