Mercurial Hosting > luan
comparison src/org/eclipse/jetty/server/nio/SelectChannelConnector.java @ 913:17f4fe8271de
simplify connectors
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sat, 08 Oct 2016 23:57:11 -0600 |
parents | 1d0c304e12b5 |
children | 54308d65265a |
comparison
equal
deleted
inserted
replaced
912:1d0c304e12b5 | 913:17f4fe8271de |
---|---|
65 * | 65 * |
66 * @org.apache.xbean.XBean element="nioConnector" description="Creates an NIO based socket connector" | 66 * @org.apache.xbean.XBean element="nioConnector" description="Creates an NIO based socket connector" |
67 */ | 67 */ |
68 public class SelectChannelConnector extends Connector | 68 public class SelectChannelConnector extends Connector |
69 { | 69 { |
70 private int _lowResourcesConnections; | |
71 private int _lowResourcesMaxIdleTime; | |
72 | |
73 private final SelectorManager _manager = new ConnectorSelectorManager(); | 70 private final SelectorManager _manager = new ConnectorSelectorManager(); |
74 | 71 |
75 public SelectChannelConnector(Server server,int port) | 72 public SelectChannelConnector(Server server,int port) |
76 { | 73 { |
77 super(server,port); | 74 super(server,port); |
93 configure(socket); | 90 configure(socket); |
94 _manager.register(channel); | 91 _manager.register(channel); |
95 } | 92 } |
96 } | 93 } |
97 | 94 |
98 public synchronized void close() throws IOException | |
99 { | |
100 if (_acceptChannel != null) | |
101 { | |
102 if (_acceptChannel.isOpen()) | |
103 _acceptChannel.close(); | |
104 } | |
105 _acceptChannel = null; | |
106 } | |
107 | |
108 @Override | 95 @Override |
109 public void customize(EndPoint endpoint, Request request) throws IOException | 96 public void customize(EndPoint endpoint, Request request) throws IOException |
110 { | 97 { |
111 request.setTimeStamp(System.currentTimeMillis()); | 98 request.setTimeStamp(System.currentTimeMillis()); |
112 endpoint.setMaxIdleTime(_maxIdleTime); | 99 endpoint.setMaxIdleTime(_maxIdleTime); |
119 AsyncEndPoint aEndp = ((AsyncEndPoint)endpoint); | 106 AsyncEndPoint aEndp = ((AsyncEndPoint)endpoint); |
120 aEndp.setCheckForIdle(true); | 107 aEndp.setCheckForIdle(true); |
121 super.persist(endpoint); | 108 super.persist(endpoint); |
122 } | 109 } |
123 | 110 |
124 public SelectorManager getSelectorManager() | |
125 { | |
126 return _manager; | |
127 } | |
128 | |
129 @Override | |
130 public void setMaxIdleTime(int maxIdleTime) | |
131 { | |
132 _manager.setMaxIdleTime(maxIdleTime); | |
133 super.setMaxIdleTime(maxIdleTime); | |
134 } | |
135 | |
136 public int getLowResourcesConnections() | |
137 { | |
138 return _lowResourcesConnections; | |
139 } | |
140 | |
141 /* ------------------------------------------------------------ */ | |
142 /** | |
143 * Set the number of connections, which if exceeded places this manager in low resources state. | |
144 * This is not an exact measure as the connection count is averaged over the select sets. | |
145 * @param lowResourcesConnections the number of connections | |
146 * @see #setLowResourcesMaxIdleTime(int) | |
147 */ | |
148 public void setLowResourcesConnections(int lowResourcesConnections) | |
149 { | |
150 _lowResourcesConnections=lowResourcesConnections; | |
151 } | |
152 | |
153 /* ------------------------------------------------------------ */ | |
154 /** | |
155 * @return the lowResourcesMaxIdleTime | |
156 */ | |
157 @Override | |
158 public int getLowResourcesMaxIdleTime() | |
159 { | |
160 return _lowResourcesMaxIdleTime; | |
161 } | |
162 | |
163 /* ------------------------------------------------------------ */ | |
164 /** | |
165 * Set the period in ms that a connection is allowed to be idle when this there are more | |
166 * than {@link #getLowResourcesConnections()} connections. This allows the server to rapidly close idle connections | |
167 * in order to gracefully handle high load situations. | |
168 * @param lowResourcesMaxIdleTime the period in ms that a connection is allowed to be idle when resources are low. | |
169 * @see #setMaxIdleTime(int) | |
170 */ | |
171 @Override | |
172 public void setLowResourcesMaxIdleTime(int lowResourcesMaxIdleTime) | |
173 { | |
174 _lowResourcesMaxIdleTime=lowResourcesMaxIdleTime; | |
175 super.setLowResourcesMaxIdleTime(lowResourcesMaxIdleTime); | |
176 } | |
177 | |
178 | |
179 @Override | 111 @Override |
180 protected synchronized void doStart() throws Exception | 112 protected synchronized void doStart() throws Exception |
181 { | 113 { |
182 _manager.setSelectSets(getAcceptors()); | 114 _manager.setSelectSets(getAcceptors()); |
183 _manager.setMaxIdleTime(getMaxIdleTime()); | 115 _manager.setMaxIdleTime(getMaxIdleTime()); |
184 _manager.setLowResourcesConnections(getLowResourcesConnections()); | 116 _manager.setLowResourcesConnections(0); |
185 _manager.setLowResourcesMaxIdleTime(getLowResourcesMaxIdleTime()); | 117 _manager.setLowResourcesMaxIdleTime(0); |
186 | 118 |
187 if (_acceptChannel == null) | 119 if (_acceptChannel == null) |
188 { | 120 { |
189 // Create a new server socket | 121 // Create a new server socket |
190 _acceptChannel = ServerSocketChannel.open(); | 122 _acceptChannel = ServerSocketChannel.open(); |