Source code: org/apache/http/HttpConnection.java
1 /*
2 * $HeadURL: https://svn.apache.org/repos/asf/jakarta/httpcomponents/httpcore/tags/4.0-alpha2/src/java/org/apache/http/HttpConnection.java $
3 * $Revision: 391135 $
4 * $Date: 2006-04-03 22:15:40 +0200 (Mon, 03 Apr 2006) $
5 *
6 * ====================================================================
7 *
8 * Copyright 1999-2006 The Apache Software Foundation
9 *
10 * Licensed under the Apache License, Version 2.0 (the "License");
11 * you may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
13 *
14 * http://www.apache.org/licenses/LICENSE-2.0
15 *
16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and
20 * limitations under the License.
21 * ====================================================================
22 *
23 * This software consists of voluntary contributions made by many
24 * individuals on behalf of the Apache Software Foundation. For more
25 * information on the Apache Software Foundation, please see
26 * <http://www.apache.org/>.
27 *
28 */
29
30 package org.apache.http;
31
32 import java.io.IOException;
33
34 /**
35 * A generic HTTP connection, useful on client and server side.
36 *
37 * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
38 *
39 * @version $Revision: 391135 $
40 *
41 * @since 4.0
42 */
43 public interface HttpConnection {
44
45 /**
46 * This method will gracefully close the connection. It will attempt to
47 * flush the transmitter's internal buffer prior to closing the underlying
48 * socket. This method MAY NOT be called from a different thread to force
49 * shutdown the connection. Use #shutdown() instead.
50 *
51 * @see #shutdown()
52 */
53 void close() throws IOException;
54
55 /**
56 * Checks if this connection is open.
57 * @return true if it is open, false if it is closed.
58 */
59 boolean isOpen();
60
61 /**
62 * Network connections may get closed during some time of inactivity for several reasons.
63 * The next time a read is attempted on such a connection it will throw an IOException.
64 * This method tries to alleviate this inconvenience by trying to find out if a connection is still
65 * usable. Implementations may do that by attempting a read with a very small timeout. Thus this
66 * method may block for a small indefinite time before returning a result.
67 *
68 * @return true if attempts to use this connection are likely to succeed, false if they are likely
69 * to fail and this connection should be closed and discarded.
70 */
71 boolean isStale();
72
73 /**
74 * This method will force close the connection. This is the only method,
75 * which may be called from a different thread to terminate the connection.
76 * This method will not attempt to flush the transmitter's internal buffer
77 * prior to closing the underlying socket.
78 */
79 void shutdown() throws IOException;
80 }