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.HttpEntityEnclosingRequest;
33 import org.apache.http.HttpException;
34 import org.apache.http.HttpRequest;
35 import org.apache.http.HttpResponse;
36 import org.apache.http.nio.entity.ConsumingNHttpEntity;
37 import org.apache.http.protocol.HttpContext;
38
39 /**
40 * NHttpRequestHandler represents a routine for asynchronous processing of
41 * a specific group of non-blocking HTTP requests. Protocol handlers are
42 * designed to take care of protocol specific aspects, whereas individual
43 * request handlers are expected to take care of application specific HTTP
44 * processing. The main purpose of a request handler is to generate a response
45 * object with a content entity to be sent back to the client in response to
46 * the given request
47 *
48 * @since 4.0
49 *
50 * @deprecated (4.2) use {@link HttpAsyncRequestHandler}
51 */
52 @Deprecated
53 public interface NHttpRequestHandler {
54
55 /**
56 * Triggered when a request is received with an entity. This method should
57 * return a {@link ConsumingNHttpEntity} that will be used to consume the
58 * entity. <code>null</code> is a valid response value, and will indicate
59 * that the entity should be silently ignored.
60 * <p>
61 * After the entity is fully consumed,
62 * {@link #handle(HttpRequest, HttpResponse, NHttpResponseTrigger, HttpContext)}
63 * is called to notify a full request & entity are ready to be processed.
64 *
65 * @param request the entity enclosing request.
66 * @param context the execution context.
67 * @return non-blocking HTTP entity.
68 * @throws IOException in case of an I/O error.
69 * @throws HttpException in case of HTTP protocol violation or a processing
70 * problem.
71 */
72 ConsumingNHttpEntity entityRequest(HttpEntityEnclosingRequest request,
73 HttpContext context)
74 throws HttpException, IOException;
75
76 /**
77 * Initiates processing of the request. This method does not have to submit
78 * a response immediately. It can defer transmission of the HTTP response
79 * back to the client without blocking the I/O thread by delegating the
80 * process of handling the HTTP request to a worker thread. The worker
81 * thread in its turn can use the instance of {@link NHttpResponseTrigger}
82 * passed as a parameter to submit a response as at a later point of time
83 * once content of the response becomes available.
84 *
85 * @param request the HTTP request.
86 * @param response the HTTP response.
87 * @param trigger the response trigger.
88 * @param context the HTTP execution context.
89 * @throws IOException in case of an I/O error.
90 * @throws HttpException in case of HTTP protocol violation or a processing
91 * problem.
92 */
93 void handle(HttpRequest request, HttpResponse response,
94 NHttpResponseTrigger trigger, HttpContext context)
95 throws HttpException, IOException;
96
97 }