Mercurial Hosting > luan
comparison src/org/eclipse/jetty/io/EndPoint.java @ 802:3428c60d7cfc
replace jetty jars with source
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 07 Sep 2016 21:15:48 -0600 |
parents | |
children | bdb6eb0fbf93 |
comparison
equal
deleted
inserted
replaced
801:6a21393191c1 | 802:3428c60d7cfc |
---|---|
1 // | |
2 // ======================================================================== | |
3 // Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd. | |
4 // ------------------------------------------------------------------------ | |
5 // All rights reserved. This program and the accompanying materials | |
6 // are made available under the terms of the Eclipse Public License v1.0 | |
7 // and Apache License v2.0 which accompanies this distribution. | |
8 // | |
9 // The Eclipse Public License is available at | |
10 // http://www.eclipse.org/legal/epl-v10.html | |
11 // | |
12 // The Apache License v2.0 is available at | |
13 // http://www.opensource.org/licenses/apache2.0.php | |
14 // | |
15 // You may elect to redistribute this code under either of these licenses. | |
16 // ======================================================================== | |
17 // | |
18 | |
19 package org.eclipse.jetty.io; | |
20 | |
21 import java.io.IOException; | |
22 | |
23 | |
24 /** | |
25 * | |
26 * A transport EndPoint | |
27 */ | |
28 public interface EndPoint | |
29 { | |
30 /** | |
31 * Shutdown any backing output stream associated with the endpoint | |
32 */ | |
33 void shutdownOutput() throws IOException; | |
34 | |
35 boolean isOutputShutdown(); | |
36 | |
37 /** | |
38 * Shutdown any backing input stream associated with the endpoint | |
39 */ | |
40 void shutdownInput() throws IOException; | |
41 | |
42 boolean isInputShutdown(); | |
43 | |
44 /** | |
45 * Close any backing stream associated with the endpoint | |
46 */ | |
47 void close() throws IOException; | |
48 | |
49 /** | |
50 * Fill the buffer from the current putIndex to it's capacity from whatever | |
51 * byte source is backing the buffer. The putIndex is increased if bytes filled. | |
52 * The buffer may chose to do a compact before filling. | |
53 * @return an <code>int</code> value indicating the number of bytes | |
54 * filled or -1 if EOF is reached. | |
55 * @throws EofException If input is shutdown or the endpoint is closed. | |
56 */ | |
57 int fill(Buffer buffer) throws IOException; | |
58 | |
59 | |
60 /** | |
61 * Flush the buffer from the current getIndex to it's putIndex using whatever byte | |
62 * sink is backing the buffer. The getIndex is updated with the number of bytes flushed. | |
63 * Any mark set is cleared. | |
64 * If the entire contents of the buffer are flushed, then an implicit empty() is done. | |
65 * | |
66 * @param buffer The buffer to flush. This buffers getIndex is updated. | |
67 * @return the number of bytes written | |
68 * @throws EofException If the endpoint is closed or output is shutdown. | |
69 */ | |
70 int flush(Buffer buffer) throws IOException; | |
71 | |
72 /** | |
73 * Flush the buffer from the current getIndex to it's putIndex using whatever byte | |
74 * sink is backing the buffer. The getIndex is updated with the number of bytes flushed. | |
75 * Any mark set is cleared. | |
76 * If the entire contents of the buffer are flushed, then an implicit empty() is done. | |
77 * The passed header/trailer buffers are written before/after the contents of this buffer. This may be done | |
78 * either as gather writes, as a poke into this buffer or as several writes. The implementation is free to | |
79 * select the optimal mechanism. | |
80 * @param header A buffer to write before flushing this buffer. This buffers getIndex is updated. | |
81 * @param buffer The buffer to flush. This buffers getIndex is updated. | |
82 * @param trailer A buffer to write after flushing this buffer. This buffers getIndex is updated. | |
83 * @return the total number of bytes written. | |
84 */ | |
85 int flush(Buffer header, Buffer buffer, Buffer trailer) throws IOException; | |
86 | |
87 | |
88 /* ------------------------------------------------------------ */ | |
89 /** | |
90 * @return The local IP address to which this <code>EndPoint</code> is bound, or <code>null</code> | |
91 * if this <code>EndPoint</code> does not represent a network connection. | |
92 */ | |
93 public String getLocalAddr(); | |
94 | |
95 /* ------------------------------------------------------------ */ | |
96 /** | |
97 * @return The local host name to which this <code>EndPoint</code> is bound, or <code>null</code> | |
98 * if this <code>EndPoint</code> does not represent a network connection. | |
99 */ | |
100 public String getLocalHost(); | |
101 | |
102 /* ------------------------------------------------------------ */ | |
103 /** | |
104 * @return The local port number on which this <code>EndPoint</code> is listening, or <code>0</code> | |
105 * if this <code>EndPoint</code> does not represent a network connection. | |
106 */ | |
107 public int getLocalPort(); | |
108 | |
109 /* ------------------------------------------------------------ */ | |
110 /** | |
111 * @return The remote IP address to which this <code>EndPoint</code> is connected, or <code>null</code> | |
112 * if this <code>EndPoint</code> does not represent a network connection. | |
113 */ | |
114 public String getRemoteAddr(); | |
115 | |
116 /* ------------------------------------------------------------ */ | |
117 /** | |
118 * @return The host name of the remote machine to which this <code>EndPoint</code> is connected, or <code>null</code> | |
119 * if this <code>EndPoint</code> does not represent a network connection. | |
120 */ | |
121 public String getRemoteHost(); | |
122 | |
123 /* ------------------------------------------------------------ */ | |
124 /** | |
125 * @return The remote port number to which this <code>EndPoint</code> is connected, or <code>0</code> | |
126 * if this <code>EndPoint</code> does not represent a network connection. | |
127 */ | |
128 public int getRemotePort(); | |
129 | |
130 /* ------------------------------------------------------------ */ | |
131 public boolean isBlocking(); | |
132 | |
133 /* ------------------------------------------------------------ */ | |
134 public boolean blockReadable(long millisecs) throws IOException; | |
135 | |
136 /* ------------------------------------------------------------ */ | |
137 public boolean blockWritable(long millisecs) throws IOException; | |
138 | |
139 /* ------------------------------------------------------------ */ | |
140 public boolean isOpen(); | |
141 | |
142 /* ------------------------------------------------------------ */ | |
143 /** | |
144 * @return The underlying transport object (socket, channel, etc.) | |
145 */ | |
146 public Object getTransport(); | |
147 | |
148 /* ------------------------------------------------------------ */ | |
149 /** Flush any buffered output. | |
150 * May fail to write all data if endpoint is non-blocking | |
151 * @throws EofException If the endpoint is closed or output is shutdown. | |
152 */ | |
153 public void flush() throws IOException; | |
154 | |
155 /* ------------------------------------------------------------ */ | |
156 /** Get the max idle time in ms. | |
157 * <p>The max idle time is the time the endpoint can be idle before | |
158 * extraordinary handling takes place. This loosely corresponds to | |
159 * the {@link java.net.Socket#getSoTimeout()} for blocking connections, | |
160 * but {@link AsyncEndPoint} implementations must use other mechanisms | |
161 * to implement the max idle time. | |
162 * @return the max idle time in ms or if ms <= 0 implies an infinite timeout | |
163 */ | |
164 public int getMaxIdleTime(); | |
165 | |
166 /* ------------------------------------------------------------ */ | |
167 /** Set the max idle time. | |
168 * @param timeMs the max idle time in MS. Timeout <= 0 implies an infinite timeout | |
169 * @throws IOException if the timeout cannot be set. | |
170 */ | |
171 public void setMaxIdleTime(int timeMs) throws IOException; | |
172 | |
173 | |
174 | |
175 } |