/* * Copyright 2010 Ning, Inc. * * Ning licenses this file to you under the Apache License, version 2.0 * (the "License"); you may not use this file except in compliance with the * License. You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.ning.http.client; import java.io.IOException; import java.util.Collection; /** * Interface to be used when implementing custom asynchronous I/O HTTP client. * By default, the {@link com.ning.http.client.providers.netty.NettyAsyncHttpProvider} is used. */ public interface AsyncHttpProvider { /** * Execute the request and invoke the {@link AsyncHandler} when the response arrive. * * @param handler an instance of {@link AsyncHandler} * @return a {@link ListenableFuture} of Type T. * @throws IOException */ public <T> ListenableFuture<T> execute(Request request, AsyncHandler<T> handler) throws IOException; /** * Close the current underlying TCP/HTTP connection. */ public void close(); /** * Prepare a {@link Response} * * @param status {@link HttpResponseStatus} * @param headers {@link HttpResponseHeaders} * @param bodyParts list of {@link HttpResponseBodyPart} * @return a {@link Response} */ public Response prepareResponse(HttpResponseStatus status, HttpResponseHeaders headers, Collection<HttpResponseBodyPart> bodyParts); }