1 /*
2 * $HeadURL: https://svn.apache.org/repos/asf/httpcomponents/httpcore/tags/4.0.1/httpcore-nio/src/main/java/org/apache/http/nio/IOControl.java $
3 * $Revision: 744541 $
4 * $Date: 2009-02-14 18:26:23 +0100 (Sat, 14 Feb 2009) $
5 *
6 * ====================================================================
7 * Licensed to the Apache Software Foundation (ASF) under one
8 * or more contributor license agreements. See the NOTICE file
9 * 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.nio;
33
34 import java.io.IOException;
35
36 /**
37 * Connection input/output control interface. It can be used to control interest
38 * in I/O event notifications for non-blocking HTTP connections.
39 * <p>
40 * Implementations of this interface are expected to be threading safe.
41 * Therefore it can be used to request / suspend I/O event notifications from
42 * any thread of execution.
43 *
44 *
45 * @version $Revision: 744541 $
46 *
47 * @since 4.0
48 */
49 public interface IOControl {
50
51 /**
52 * Requests event notifications to be triggered when the underlying
53 * channel is ready for input operations.
54 */
55 void requestInput();
56
57 /**
58 * Suspends event notifications about the underlying channel being
59 * ready for input operations.
60 */
61 void suspendInput();
62
63 /**
64 * Requests event notifications to be triggered when the underlying
65 * channel is ready for output operations.
66 */
67 void requestOutput();
68
69 /**
70 * Suspends event notifications about the underlying channel being
71 * ready for output operations.
72 */
73 void suspendOutput();
74
75 /**
76 * Shuts down the underlying channel.
77 *
78 * @throws IOException
79 */
80 void shutdown() throws IOException;
81
82 }