01: /*
02: * $HeadURL: https://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.0-beta1/module-main/src/main/java/org/apache/http/ConnectionReuseStrategy.java $
03: * $Revision: 496070 $
04: * $Date: 2007-01-14 13:18:34 +0100 (Sun, 14 Jan 2007) $
05: *
06: * ====================================================================
07: * Licensed to the Apache Software Foundation (ASF) under one
08: * or more contributor license agreements. See the NOTICE file
09: * distributed with this work for additional information
10: * regarding copyright ownership. The ASF licenses this file
11: * to you under the Apache License, Version 2.0 (the
12: * "License"); you may not use this file except in compliance
13: * with the License. You may obtain a copy of the License at
14: *
15: * http://www.apache.org/licenses/LICENSE-2.0
16: *
17: * Unless required by applicable law or agreed to in writing,
18: * software distributed under the License is distributed on an
19: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
20: * KIND, either express or implied. See the License for the
21: * specific language governing permissions and limitations
22: * under the License.
23: * ====================================================================
24: *
25: * This software consists of voluntary contributions made by many
26: * individuals on behalf of the Apache Software Foundation. For more
27: * information on the Apache Software Foundation, please see
28: * <http://www.apache.org/>.
29: *
30: */
31:
32: package org.apache.http;
33:
34: import org.apache.http.protocol.HttpContext;
35:
36: /**
37: * Interface for deciding whether a connection should be kept alive.
38: *
39: * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
40: *
41: *
42: * <!-- empty lines above to avoid 'svn diff' context problems -->
43: * @version $Revision: 496070 $
44: *
45: * @since 4.0
46: */
47: public interface ConnectionReuseStrategy {
48:
49: /**
50: * Decides whether a connection can be kept open after a request.
51: * If this method returns <code>false</code>, the caller MUST
52: * close the connection to correctly implement the HTTP protocol.
53: * If it returns <code>true</code>, the caller SHOULD attempt to
54: * keep the connection open for reuse with another request.
55: * <br/>
56: * One can use the HTTP context to retrieve additional objects that
57: * may be relevant for the keep-alive strategy: the actual HTTP
58: * connection, the original HTTP request, target host if known,
59: * number of times the connection has been reused already and so on.
60: * <br/>
61: * If the connection is already closed, <code>false</code> is returned.
62: * The stale connection check MUST NOT be triggered by a
63: * connection reuse strategy.
64: *
65: * @param response
66: * The last response received over that connection.
67: * @param context the context in which the connection is being
68: * used.
69: *
70: * @return <code>true</code> if the connection is allowed to be reused, or
71: * <code>false</code> if it MUST NOT be reused
72: */
73: boolean keepAlive(HttpResponse response, HttpContext context);
74:
75: }
|