comparison src/org/eclipse/jetty/io/nio/ChannelEndPoint.java @ 960:3cd4c706a61f

simplify ChannelEndPoint
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 13 Oct 2016 21:29:19 -0600
parents fc521d2f098e
children 866f2e801618
comparison
equal deleted inserted replaced
959:7b94f5b33c64 960:3cd4c706a61f
50 protected final InetSocketAddress _remote; 50 protected final InetSocketAddress _remote;
51 protected volatile int _maxIdleTime; 51 protected volatile int _maxIdleTime;
52 private volatile boolean _ishut; 52 private volatile boolean _ishut;
53 private volatile boolean _oshut; 53 private volatile boolean _oshut;
54 54
55 public ChannelEndPoint(ByteChannel channel) throws IOException 55 protected ChannelEndPoint(ByteChannel channel, int maxIdleTime) throws IOException
56 { 56 {
57 super();
58 this._channel = channel; 57 this._channel = channel;
59 _socket=(channel instanceof SocketChannel)?((SocketChannel)channel).socket():null; 58 _maxIdleTime = maxIdleTime;
59 _socket = (channel instanceof SocketChannel)?((SocketChannel)channel).socket():null;
60 if (_socket!=null) 60 if (_socket!=null)
61 { 61 {
62 _local=(InetSocketAddress)_socket.getLocalSocketAddress(); 62 _local = (InetSocketAddress)_socket.getLocalSocketAddress();
63 _remote=(InetSocketAddress)_socket.getRemoteSocketAddress(); 63 _remote = (InetSocketAddress)_socket.getRemoteSocketAddress();
64 _maxIdleTime=_socket.getSoTimeout(); 64 _socket.setSoTimeout(_maxIdleTime);
65 } 65 }
66 else 66 else
67 { 67 {
68 _local=_remote=null; 68 _local = _remote = null;
69 } 69 }
70 } 70 }
71 71
72 protected ChannelEndPoint(ByteChannel channel, int maxIdleTime) throws IOException 72 @Override
73 { 73 public final boolean isBlocking()
74 this._channel = channel;
75 _maxIdleTime=maxIdleTime;
76 _socket=(channel instanceof SocketChannel)?((SocketChannel)channel).socket():null;
77 if (_socket!=null)
78 {
79 _local=(InetSocketAddress)_socket.getLocalSocketAddress();
80 _remote=(InetSocketAddress)_socket.getRemoteSocketAddress();
81 _socket.setSoTimeout(_maxIdleTime);
82 }
83 else
84 {
85 _local=_remote=null;
86 }
87 }
88
89 public boolean isBlocking()
90 { 74 {
91 return !(_channel instanceof SelectableChannel) || ((SelectableChannel)_channel).isBlocking(); 75 return !(_channel instanceof SelectableChannel) || ((SelectableChannel)_channel).isBlocking();
92 } 76 }
93 77
78 @Override
94 public boolean blockReadable(long millisecs) throws IOException 79 public boolean blockReadable(long millisecs) throws IOException
95 { 80 {
96 return true; 81 return true;
97 } 82 }
98 83
84 @Override
99 public boolean blockWritable(long millisecs) throws IOException 85 public boolean blockWritable(long millisecs) throws IOException
100 { 86 {
101 return true; 87 return true;
102 } 88 }
103 89
104 /* 90 @Override
105 * @see org.eclipse.io.EndPoint#isOpen() 91 public final boolean isOpen()
106 */
107 public boolean isOpen()
108 { 92 {
109 return _channel.isOpen(); 93 return _channel.isOpen();
110 } 94 }
111 95
112 /** Shutdown the channel Input. 96 @Override
113 * Cannot be overridden. To override, see {@link #shutdownInput()} 97 public final void shutdownInput() throws IOException
114 * @throws IOException
115 */
116 protected final void shutdownChannelInput() throws IOException
117 { 98 {
118 LOG.debug("ishut {}", this); 99 LOG.debug("ishut {}", this);
119 _ishut = true; 100 _ishut = true;
120 if (_channel.isOpen()) 101 if (_channel.isOpen())
121 { 102 {
142 } 123 }
143 } 124 }
144 } 125 }
145 } 126 }
146 127
147 /* (non-Javadoc) 128 @Override
148 * @see org.eclipse.io.EndPoint#close() 129 public final void shutdownOutput() throws IOException
149 */
150 public void shutdownInput() throws IOException
151 {
152 shutdownChannelInput();
153 }
154
155 protected final void shutdownChannelOutput() throws IOException
156 { 130 {
157 LOG.debug("oshut {}",this); 131 LOG.debug("oshut {}",this);
158 _oshut = true; 132 _oshut = true;
159 if (_channel.isOpen()) 133 if (_channel.isOpen())
160 { 134 {
181 } 155 }
182 } 156 }
183 } 157 }
184 } 158 }
185 159
186 /* (non-Javadoc) 160 @Override
187 * @see org.eclipse.io.EndPoint#close() 161 public final boolean isOutputShutdown()
188 */
189 public void shutdownOutput() throws IOException
190 {
191 shutdownChannelOutput();
192 }
193
194 public boolean isOutputShutdown()
195 { 162 {
196 return _oshut || !_channel.isOpen() || _socket != null && _socket.isOutputShutdown(); 163 return _oshut || !_channel.isOpen() || _socket != null && _socket.isOutputShutdown();
197 } 164 }
198 165
199 public boolean isInputShutdown() 166 @Override
167 public final boolean isInputShutdown()
200 { 168 {
201 return _ishut || !_channel.isOpen() || _socket != null && _socket.isInputShutdown(); 169 return _ishut || !_channel.isOpen() || _socket != null && _socket.isInputShutdown();
202 } 170 }
203 171
204 /* (non-Javadoc) 172 @Override
205 * @see org.eclipse.io.EndPoint#close()
206 */
207 public void close() throws IOException 173 public void close() throws IOException
208 { 174 {
209 LOG.debug("close {}",this); 175 LOG.debug("close {}",this);
210 _channel.close(); 176 _channel.close();
211 } 177 }