1 /* 2 * ==================================================================== 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * ==================================================================== 20 * 21 * This software consists of voluntary contributions made by many 22 * individuals on behalf of the Apache Software Foundation. For more 23 * information on the Apache Software Foundation, please see 24 * <http://www.apache.org/>. 25 * 26 */ 27 28 package org.apache.http.nio.protocol; 29 30 import java.io.IOException; 31 32 import org.apache.http.HttpRequest; 33 import org.apache.http.HttpResponse; 34 import org.apache.http.protocol.HttpContext; 35 36 /** 37 * HTTP request execution handler can be used by client-side protocol handlers 38 * to trigger the submission of a new HTTP request and the processing of an 39 * HTTP response. 40 * 41 * @since 4.0 42 * 43 * @deprecated (4.2) use {@link HttpAsyncRequestExecutor} and {@link HttpAsyncRequester} 44 */ 45 @Deprecated 46 public interface HttpRequestExecutionHandler { 47 48 /** 49 * Triggered when a new connection has been established and the 50 * HTTP context needs to be initialized. 51 * 52 * <p>The attachment object is the same object which was passed 53 * to the connecting I/O reactor when the connection request was 54 * made. The attachment may optionally contain some state information 55 * required in order to correctly initialize the HTTP context. 56 * 57 * @see org.apache.http.nio.reactor.ConnectingIOReactor#connect 58 * 59 * @param context the actual HTTP context 60 * @param attachment the object passed to the connecting I/O reactor 61 * upon the request for a new connection. 62 */ 63 void initalizeContext(HttpContext context, Object attachment); 64 65 /** 66 * Triggered when the underlying connection is ready to send a new 67 * HTTP request to the target host. This method may return 68 * {@code null} if the client is not yet ready to send a 69 * request. In this case the connection will remain open and 70 * can be activated at a later point. 71 * 72 * @param context the actual HTTP context 73 * @return an HTTP request to be sent or {@code null} if no 74 * request needs to be sent 75 */ 76 HttpRequest submitRequest(HttpContext context); 77 78 /** 79 * Triggered when an HTTP response is ready to be processed. 80 * 81 * @param response the HTTP response to be processed 82 * @param context the actual HTTP context 83 * @throws IOException if a problem is encountered 84 */ 85 void handleResponse(HttpResponse response, HttpContext context) 86 throws IOException; 87 88 /** 89 * Triggered when the connection is terminated. This event can be used 90 * to release objects stored in the context or perform some other kind 91 * of cleanup. 92 * 93 * @param context the actual HTTP context 94 */ 95 void finalizeContext(HttpContext context); 96 97 }