All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hubspot.horizon.ning.internal.NingCompletionHandler Maven / Gradle / Ivy

package com.hubspot.horizon.ning.internal;

import com.google.common.net.HttpHeaders;
import com.hubspot.horizon.HttpRequest;
import com.hubspot.horizon.HttpResponse;
import com.ning.http.client.AsyncCompletionHandler;
import com.ning.http.client.Response;

import java.io.IOException;

public class NingCompletionHandler extends AsyncCompletionHandler {
  private final HttpRequest request;
  private final NingFuture future;
  private final NingRetryHandler retryHandler;

  public NingCompletionHandler(HttpRequest request, NingFuture future, NingRetryHandler retryHandler) {
    this.request = request;
    this.future = future;
    this.retryHandler = retryHandler;
  }

  @Override
  public HttpResponse onCompleted(Response ningResponse) throws Exception {
    HttpResponse response = new NingHttpResponse(request, ningResponse);
    if ("snappy".equals(ningResponse.getHeader(HttpHeaders.CONTENT_ENCODING))) {
      response = new SnappyHttpResponseWrapper(response);
    }
    if (retryHandler.shouldRetry(request, response)) {
      retryHandler.retry();
    } else {
      future.setNonnull(response);
    }
    return response;
  }

  @Override
  public void onThrowable(Throwable t) {
    IOException e = t instanceof IOException ? (IOException) t : new IOException(t);
    if (retryHandler.shouldRetry(request, e)) {
      retryHandler.retry();
    } else {
      future.setException(e);
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy