Mercurial Hosting > luan
comparison src/org/eclipse/jetty/io/nio/SelectChannelEndPoint.java @ 964:768414c16e10
remove SelectSet
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 14 Oct 2016 01:03:47 -0600 |
parents | 4b6216fa9cec |
children | 866f2e801618 |
comparison
equal
deleted
inserted
replaced
963:4b6216fa9cec | 964:768414c16e10 |
---|---|
30 import org.eclipse.jetty.io.AsyncEndPoint; | 30 import org.eclipse.jetty.io.AsyncEndPoint; |
31 import org.eclipse.jetty.io.Buffer; | 31 import org.eclipse.jetty.io.Buffer; |
32 import org.eclipse.jetty.io.ConnectedEndPoint; | 32 import org.eclipse.jetty.io.ConnectedEndPoint; |
33 import org.eclipse.jetty.io.Connection; | 33 import org.eclipse.jetty.io.Connection; |
34 import org.eclipse.jetty.io.EofException; | 34 import org.eclipse.jetty.io.EofException; |
35 import org.eclipse.jetty.io.nio.SelectorManager.SelectSet; | |
36 import org.slf4j.Logger; | 35 import org.slf4j.Logger; |
37 import org.slf4j.LoggerFactory; | 36 import org.slf4j.LoggerFactory; |
38 | 37 |
39 | 38 |
40 /* ------------------------------------------------------------ */ | 39 /* ------------------------------------------------------------ */ |
43 */ | 42 */ |
44 public final class SelectChannelEndPoint extends ChannelEndPoint implements AsyncEndPoint, ConnectedEndPoint | 43 public final class SelectChannelEndPoint extends ChannelEndPoint implements AsyncEndPoint, ConnectedEndPoint |
45 { | 44 { |
46 public static final Logger LOG=LoggerFactory.getLogger("org.eclipse.jetty.io.nio"); | 45 public static final Logger LOG=LoggerFactory.getLogger("org.eclipse.jetty.io.nio"); |
47 | 46 |
48 private final SelectorManager.SelectSet _selectSet; | |
49 private final SelectorManager _manager; | 47 private final SelectorManager _manager; |
50 private final SelectionKey _key; | 48 private final SelectionKey _key; |
51 private final Runnable _handler = new Runnable() | 49 private final Runnable _handler = new Runnable() |
52 { | 50 { |
53 public void run() { handle(); } | 51 public void run() { handle(); } |
77 /** True if a thread has is blocked in {@link #blockWritable(long)} */ | 75 /** True if a thread has is blocked in {@link #blockWritable(long)} */ |
78 private boolean _writeBlocked; | 76 private boolean _writeBlocked; |
79 | 77 |
80 private boolean _ishut = false; | 78 private boolean _ishut = false; |
81 | 79 |
82 public SelectChannelEndPoint(SocketChannel channel, SelectSet selectSet, SelectionKey key, int maxIdleTime) | 80 public SelectChannelEndPoint(SocketChannel channel, SelectorManager manager, SelectionKey key, int maxIdleTime) |
83 throws IOException | 81 throws IOException |
84 { | 82 { |
85 super(channel, maxIdleTime); | 83 super(channel, maxIdleTime); |
86 | 84 |
87 _manager = selectSet.getManager(); | 85 _manager = manager; |
88 _selectSet = selectSet; | |
89 _key = key; | 86 _key = key; |
90 } | 87 } |
91 | 88 |
92 @Override | 89 @Override |
93 public Connection getConnection() | 90 public Connection getConnection() |
232 public synchronized boolean blockReadable(long timeoutMs) throws IOException | 229 public synchronized boolean blockReadable(long timeoutMs) throws IOException |
233 { | 230 { |
234 if (isInputShutdown()) | 231 if (isInputShutdown()) |
235 throw new EofException(); | 232 throw new EofException(); |
236 | 233 |
237 long now = _selectSet.getNow(); | 234 long now = _manager.getNow(); |
238 long end = now+timeoutMs; | 235 long end = now+timeoutMs; |
239 try | 236 try |
240 { | 237 { |
241 _readBlocked = true; | 238 _readBlocked = true; |
242 while (!isInputShutdown() && _readBlocked) | 239 while (!isInputShutdown() && _readBlocked) |
250 { | 247 { |
251 LOG.warn("",e); | 248 LOG.warn("",e); |
252 } | 249 } |
253 finally | 250 finally |
254 { | 251 { |
255 now = _selectSet.getNow(); | 252 now = _manager.getNow(); |
256 } | 253 } |
257 | 254 |
258 if (_readBlocked && timeoutMs>0 && now>=end) | 255 if (_readBlocked && timeoutMs>0 && now>=end) |
259 return false; | 256 return false; |
260 } | 257 } |
274 public synchronized boolean blockWritable(long timeoutMs) throws IOException | 271 public synchronized boolean blockWritable(long timeoutMs) throws IOException |
275 { | 272 { |
276 if (isOutputShutdown()) | 273 if (isOutputShutdown()) |
277 throw new EofException(); | 274 throw new EofException(); |
278 | 275 |
279 long now=_selectSet.getNow(); | 276 long now=_manager.getNow(); |
280 long end=now+timeoutMs; | 277 long end=now+timeoutMs; |
281 try | 278 try |
282 { | 279 { |
283 _writeBlocked = true; | 280 _writeBlocked = true; |
284 while (_writeBlocked && !isOutputShutdown()) | 281 while (_writeBlocked && !isOutputShutdown()) |
292 { | 289 { |
293 LOG.warn("",e); | 290 LOG.warn("",e); |
294 } | 291 } |
295 finally | 292 finally |
296 { | 293 { |
297 now = _selectSet.getNow(); | 294 now = _manager.getNow(); |
298 } | 295 } |
299 if (_writeBlocked && timeoutMs>0 && now>=end) | 296 if (_writeBlocked && timeoutMs>0 && now>=end) |
300 return false; | 297 return false; |
301 } | 298 } |
302 } | 299 } |
331 int interestOps = | 328 int interestOps = |
332 ((!_socket.isInputShutdown() && read_interest ) ? SelectionKey.OP_READ : 0) | 329 ((!_socket.isInputShutdown() && read_interest ) ? SelectionKey.OP_READ : 0) |
333 | ((!_socket.isOutputShutdown()&& write_interest) ? SelectionKey.OP_WRITE : 0); | 330 | ((!_socket.isOutputShutdown()&& write_interest) ? SelectionKey.OP_WRITE : 0); |
334 if( _key.interestOps() != interestOps ) { | 331 if( _key.interestOps() != interestOps ) { |
335 _key.interestOps(interestOps); | 332 _key.interestOps(interestOps); |
336 _selectSet.getSelector().update(); | 333 _manager.getSelector().update(); |
337 } | 334 } |
338 } else { | 335 } else { |
339 _key.cancel(); | 336 _key.cancel(); |
340 // update needed? | 337 // update needed? |
341 } | 338 } |