Mercurial Hosting > luan
comparison src/org/eclipse/jetty/server/Connector.java @ 818:ad292e148964
remove util/statistic
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Fri, 09 Sep 2016 17:09:20 -0600 |
| parents | 3428c60d7cfc |
| children | 6b210bb66c63 |
comparison
equal
deleted
inserted
replaced
| 817:eb33d0045bc2 | 818:ad292e148964 |
|---|---|
| 42 * @author gregw | 42 * @author gregw |
| 43 * | 43 * |
| 44 */ | 44 */ |
| 45 public interface Connector extends LifeCycle | 45 public interface Connector extends LifeCycle |
| 46 { | 46 { |
| 47 /* ------------------------------------------------------------ */ | 47 /* ------------------------------------------------------------ */ |
| 48 /** | 48 /** |
| 49 * @return the name of the connector. Defaults to the HostName:port | 49 * @return the name of the connector. Defaults to the HostName:port |
| 50 */ | 50 */ |
| 51 String getName(); | 51 String getName(); |
| 52 | 52 |
| 53 /* ------------------------------------------------------------ */ | 53 /* ------------------------------------------------------------ */ |
| 54 /** | 54 /** |
| 55 * Opens the connector | 55 * Opens the connector |
| 56 * @throws IOException | 56 * @throws IOException |
| 57 */ | 57 */ |
| 58 void open() throws IOException; | 58 void open() throws IOException; |
| 59 | 59 |
| 60 /* ------------------------------------------------------------ */ | 60 /* ------------------------------------------------------------ */ |
| 61 void close() throws IOException; | 61 void close() throws IOException; |
| 62 | 62 |
| 63 /* ------------------------------------------------------------ */ | 63 /* ------------------------------------------------------------ */ |
| 64 void setServer(Server server); | 64 void setServer(Server server); |
| 65 | 65 |
| 66 /* ------------------------------------------------------------ */ | 66 /* ------------------------------------------------------------ */ |
| 67 Server getServer(); | 67 Server getServer(); |
| 68 | 68 |
| 69 /* ------------------------------------------------------------ */ | 69 /* ------------------------------------------------------------ */ |
| 70 /** | 70 /** |
| 71 * @return Returns the request header buffer size in bytes. | 71 * @return Returns the request header buffer size in bytes. |
| 72 */ | 72 */ |
| 73 int getRequestHeaderSize(); | 73 int getRequestHeaderSize(); |
| 74 | 74 |
| 75 /* ------------------------------------------------------------ */ | 75 /* ------------------------------------------------------------ */ |
| 76 /** | 76 /** |
| 77 * Set the size of the buffer to be used for request headers. | 77 * Set the size of the buffer to be used for request headers. |
| 78 * @param size The size in bytes. | 78 * @param size The size in bytes. |
| 79 */ | 79 */ |
| 80 void setRequestHeaderSize(int size); | 80 void setRequestHeaderSize(int size); |
| 81 | 81 |
| 82 /* ------------------------------------------------------------ */ | 82 /* ------------------------------------------------------------ */ |
| 83 /** | 83 /** |
| 84 * @return Returns the response header buffer size in bytes. | 84 * @return Returns the response header buffer size in bytes. |
| 85 */ | 85 */ |
| 86 int getResponseHeaderSize(); | 86 int getResponseHeaderSize(); |
| 87 | 87 |
| 88 /* ------------------------------------------------------------ */ | 88 /* ------------------------------------------------------------ */ |
| 89 /** | 89 /** |
| 90 * Set the size of the buffer to be used for request headers. | 90 * Set the size of the buffer to be used for request headers. |
| 91 * @param size The size in bytes. | 91 * @param size The size in bytes. |
| 92 */ | 92 */ |
| 93 void setResponseHeaderSize(int size); | 93 void setResponseHeaderSize(int size); |
| 94 | 94 |
| 95 | 95 |
| 96 /* ------------------------------------------------------------ */ | 96 /* ------------------------------------------------------------ */ |
| 97 /** | 97 /** |
| 98 * @return factory for request buffers | 98 * @return factory for request buffers |
| 99 */ | 99 */ |
| 100 Buffers getRequestBuffers(); | 100 Buffers getRequestBuffers(); |
| 101 | 101 |
| 102 /* ------------------------------------------------------------ */ | 102 /* ------------------------------------------------------------ */ |
| 103 /** | 103 /** |
| 104 * @return factory for response buffers | 104 * @return factory for response buffers |
| 105 */ | 105 */ |
| 106 Buffers getResponseBuffers(); | 106 Buffers getResponseBuffers(); |
| 107 | 107 |
| 108 | 108 |
| 109 /* ------------------------------------------------------------ */ | 109 /* ------------------------------------------------------------ */ |
| 110 /** | 110 /** |
| 111 * @return Returns the requestBufferSize. | 111 * @return Returns the requestBufferSize. |
| 112 */ | 112 */ |
| 113 int getRequestBufferSize(); | 113 int getRequestBufferSize(); |
| 114 | 114 |
| 115 /* ------------------------------------------------------------ */ | 115 /* ------------------------------------------------------------ */ |
| 116 /** | 116 /** |
| 117 * Set the size of the content buffer for receiving requests. | 117 * Set the size of the content buffer for receiving requests. |
| 118 * These buffers are only used for active connections that have | 118 * These buffers are only used for active connections that have |
| 119 * requests with bodies that will not fit within the header buffer. | 119 * requests with bodies that will not fit within the header buffer. |
| 120 * @param requestBufferSize The requestBufferSize to set. | 120 * @param requestBufferSize The requestBufferSize to set. |
| 121 */ | 121 */ |
| 122 void setRequestBufferSize(int requestBufferSize); | 122 void setRequestBufferSize(int requestBufferSize); |
| 123 | 123 |
| 124 /* ------------------------------------------------------------ */ | 124 /* ------------------------------------------------------------ */ |
| 125 /** | 125 /** |
| 126 * @return Returns the responseBufferSize. | 126 * @return Returns the responseBufferSize. |
| 127 */ | 127 */ |
| 128 int getResponseBufferSize(); | 128 int getResponseBufferSize(); |
| 129 | 129 |
| 130 /* ------------------------------------------------------------ */ | 130 /* ------------------------------------------------------------ */ |
| 131 /** | 131 /** |
| 132 * Set the size of the content buffer for sending responses. | 132 * Set the size of the content buffer for sending responses. |
| 133 * These buffers are only used for active connections that are sending | 133 * These buffers are only used for active connections that are sending |
| 134 * responses with bodies that will not fit within the header buffer. | 134 * responses with bodies that will not fit within the header buffer. |
| 135 * @param responseBufferSize The responseBufferSize to set. | 135 * @param responseBufferSize The responseBufferSize to set. |
| 136 */ | 136 */ |
| 137 void setResponseBufferSize(int responseBufferSize); | 137 void setResponseBufferSize(int responseBufferSize); |
| 138 | 138 |
| 139 | 139 |
| 140 /* ------------------------------------------------------------ */ | 140 /* ------------------------------------------------------------ */ |
| 141 /** | 141 /** |
| 142 * @return The port to use when redirecting a request if a data constraint of integral is | 142 * @return The port to use when redirecting a request if a data constraint of integral is |
| 143 * required. See {@link org.eclipse.jetty.util.security.Constraint#getDataConstraint()} | 143 * required. See {@link org.eclipse.jetty.util.security.Constraint#getDataConstraint()} |
| 144 */ | 144 */ |
| 145 int getIntegralPort(); | 145 int getIntegralPort(); |
| 146 | 146 |
| 147 /* ------------------------------------------------------------ */ | 147 /* ------------------------------------------------------------ */ |
| 148 /** | 148 /** |
| 149 * @return The schema to use when redirecting a request if a data constraint of integral is | 149 * @return The schema to use when redirecting a request if a data constraint of integral is |
| 150 * required. See {@link org.eclipse.jetty.util.security.Constraint#getDataConstraint()} | 150 * required. See {@link org.eclipse.jetty.util.security.Constraint#getDataConstraint()} |
| 151 */ | 151 */ |
| 152 String getIntegralScheme(); | 152 String getIntegralScheme(); |
| 153 | 153 |
| 154 /* ------------------------------------------------------------ */ | 154 /* ------------------------------------------------------------ */ |
| 155 /** | 155 /** |
| 156 * @param request A request | 156 * @param request A request |
| 157 * @return true if the request is integral. This normally means the https schema has been used. | 157 * @return true if the request is integral. This normally means the https schema has been used. |
| 158 */ | 158 */ |
| 159 boolean isIntegral(Request request); | 159 boolean isIntegral(Request request); |
| 160 | 160 |
| 161 /* ------------------------------------------------------------ */ | 161 /* ------------------------------------------------------------ */ |
| 162 /** | 162 /** |
| 163 * @return The port to use when redirecting a request if a data constraint of confidential is | 163 * @return The port to use when redirecting a request if a data constraint of confidential is |
| 164 * required. See {@link org.eclipse.jetty.util.security.Constraint#getDataConstraint()} | 164 * required. See {@link org.eclipse.jetty.util.security.Constraint#getDataConstraint()} |
| 165 */ | 165 */ |
| 166 int getConfidentialPort(); | 166 int getConfidentialPort(); |
| 167 | 167 |
| 168 | 168 |
| 169 /* ------------------------------------------------------------ */ | 169 /* ------------------------------------------------------------ */ |
| 170 /** | 170 /** |
| 171 * @return The schema to use when redirecting a request if a data constraint of confidential is | 171 * @return The schema to use when redirecting a request if a data constraint of confidential is |
| 172 * required. See {@link org.eclipse.jetty.util.security.Constraint#getDataConstraint()} | 172 * required. See {@link org.eclipse.jetty.util.security.Constraint#getDataConstraint()} |
| 173 */ | 173 */ |
| 174 String getConfidentialScheme(); | 174 String getConfidentialScheme(); |
| 175 | 175 |
| 176 /* ------------------------------------------------------------ */ | 176 /* ------------------------------------------------------------ */ |
| 177 /** | 177 /** |
| 178 * @param request A request | 178 * @param request A request |
| 179 * @return true if the request is confidential. This normally means the https schema has been used. | 179 * @return true if the request is confidential. This normally means the https schema has been used. |
| 180 */ | 180 */ |
| 181 boolean isConfidential(Request request); | 181 boolean isConfidential(Request request); |
| 182 | 182 |
| 183 /* ------------------------------------------------------------ */ | 183 /* ------------------------------------------------------------ */ |
| 184 /** Customize a request for an endpoint. | 184 /** Customize a request for an endpoint. |
| 185 * Called on every request to allow customization of the request for | 185 * Called on every request to allow customization of the request for |
| 186 * the particular endpoint (eg security properties from a SSL connection). | 186 * the particular endpoint (eg security properties from a SSL connection). |
| 187 * @param endpoint | 187 * @param endpoint |
| 188 * @param request | 188 * @param request |
| 189 * @throws IOException | 189 * @throws IOException |
| 190 */ | 190 */ |
| 191 void customize(EndPoint endpoint, Request request) throws IOException; | 191 void customize(EndPoint endpoint, Request request) throws IOException; |
| 192 | 192 |
| 193 /* ------------------------------------------------------------ */ | 193 /* ------------------------------------------------------------ */ |
| 194 /** Persist an endpoint. | 194 /** Persist an endpoint. |
| 195 * Called after every request if the connection is to remain open. | 195 * Called after every request if the connection is to remain open. |
| 196 * @param endpoint | 196 * @param endpoint |
| 197 * @throws IOException | 197 * @throws IOException |
| 198 */ | 198 */ |
| 199 void persist(EndPoint endpoint) throws IOException; | 199 void persist(EndPoint endpoint) throws IOException; |
| 200 | 200 |
| 201 /* ------------------------------------------------------------ */ | 201 /* ------------------------------------------------------------ */ |
| 202 /** | 202 /** |
| 203 * @return The hostname representing the interface to which | 203 * @return The hostname representing the interface to which |
| 204 * this connector will bind, or null for all interfaces. | 204 * this connector will bind, or null for all interfaces. |
| 205 */ | 205 */ |
| 206 String getHost(); | 206 String getHost(); |
| 207 | 207 |
| 208 /* ------------------------------------------------------------ */ | 208 /* ------------------------------------------------------------ */ |
| 209 /** | 209 /** |
| 210 * Set the hostname of the interface to bind to. | 210 * Set the hostname of the interface to bind to. |
| 211 * @param hostname The hostname representing the interface to which | 211 * @param hostname The hostname representing the interface to which |
| 212 * this connector will bind, or null for all interfaces. | 212 * this connector will bind, or null for all interfaces. |
| 213 */ | 213 */ |
| 214 void setHost(String hostname); | 214 void setHost(String hostname); |
| 215 | 215 |
| 216 /* ------------------------------------------------------------ */ | 216 /* ------------------------------------------------------------ */ |
| 217 /** | 217 /** |
| 218 * @param port The port to listen of for connections or 0 if any available | 218 * @param port The port to listen of for connections or 0 if any available |
| 219 * port may be used. | 219 * port may be used. |
| 220 */ | 220 */ |
| 221 void setPort(int port); | 221 void setPort(int port); |
| 222 | 222 |
| 223 /* ------------------------------------------------------------ */ | 223 /* ------------------------------------------------------------ */ |
| 224 /** | 224 /** |
| 225 * @return The configured port for the connector or 0 if any available | 225 * @return The configured port for the connector or 0 if any available |
| 226 * port may be used. | 226 * port may be used. |
| 227 */ | 227 */ |
| 228 int getPort(); | 228 int getPort(); |
| 229 | 229 |
| 230 /* ------------------------------------------------------------ */ | 230 /* ------------------------------------------------------------ */ |
| 231 /** | 231 /** |
| 232 * @return The actual port the connector is listening on or | 232 * @return The actual port the connector is listening on or |
| 233 * -1 if it has not been opened, or -2 if it has been closed. | 233 * -1 if it has not been opened, or -2 if it has been closed. |
| 234 */ | 234 */ |
| 235 int getLocalPort(); | 235 int getLocalPort(); |
| 236 | 236 |
| 237 /* ------------------------------------------------------------ */ | 237 /* ------------------------------------------------------------ */ |
| 238 /** | 238 /** |
| 239 * @return Max Idle time for connections in milliseconds | 239 * @return Max Idle time for connections in milliseconds |
| 240 */ | 240 */ |
| 241 int getMaxIdleTime(); | 241 int getMaxIdleTime(); |
| 242 | 242 |
| 243 /** | 243 /** |
| 244 * @param ms Max Idle time for connections in milliseconds | 244 * @param ms Max Idle time for connections in milliseconds |
| 245 */ | 245 */ |
| 246 void setMaxIdleTime(int ms); | 246 void setMaxIdleTime(int ms); |
| 247 | 247 |
| 248 /* ------------------------------------------------------------ */ | 248 /* ------------------------------------------------------------ */ |
| 249 int getLowResourceMaxIdleTime(); | 249 int getLowResourceMaxIdleTime(); |
| 250 void setLowResourceMaxIdleTime(int ms); | 250 void setLowResourceMaxIdleTime(int ms); |
| 251 | 251 |
| 252 /* ------------------------------------------------------------ */ | 252 /* ------------------------------------------------------------ */ |
| 253 /** | 253 /** |
| 254 * @return the underlying socket, channel, buffer etc. for the connector. | 254 * @return the underlying socket, channel, buffer etc. for the connector. |
| 255 */ | 255 */ |
| 256 Object getConnection(); | 256 Object getConnection(); |
| 257 | 257 |
| 258 | 258 |
| 259 /* ------------------------------------------------------------ */ | 259 /* ------------------------------------------------------------ */ |
| 260 /** | 260 /** |
| 261 * @return true if names resolution should be done. | 261 * @return true if names resolution should be done. |
| 262 */ | 262 */ |
| 263 boolean getResolveNames(); | 263 boolean getResolveNames(); |
| 264 | 264 |
| 265 | 265 |
| 266 | 266 |
| 267 /* ------------------------------------------------------------ */ | 267 /* ------------------------------------------------------------ */ |
| 268 /** | 268 /** Check if low on resources. |
| 269 * @return Get the number of requests handled by this connector | 269 * For most connectors, low resources is measured by calling |
| 270 * since last call of statsReset(). If setStatsOn(false) then this | 270 * {@link ThreadPool#isLowOnThreads()} on the connector threadpool |
| 271 * is undefined. | 271 * or the server threadpool if there is no connector threadpool. |
| 272 */ | 272 * <p> |
| 273 public int getRequests(); | 273 * For blocking connectors, low resources is used to trigger |
| 274 | 274 * usage of {@link #getLowResourceMaxIdleTime()} for the timeout |
| 275 /* ------------------------------------------------------------ */ | 275 * of an idle connection. |
| 276 /** | 276 * <p> |
| 277 * @return Returns the connectionsDurationTotal. | 277 * for non-blocking connectors, the number of connections is |
| 278 */ | 278 * used instead of this method, to select the timeout of an |
| 279 public long getConnectionsDurationTotal(); | 279 * idle connection. |
| 280 | 280 * <p> |
| 281 /* ------------------------------------------------------------ */ | 281 * For all connectors, low resources is used to trigger the |
| 282 /** | 282 * usage of {@link #getLowResourceMaxIdleTime()} for read and |
| 283 * @return Number of connections accepted by the server since | 283 * write operations. |
| 284 * statsReset() called. Undefined if setStatsOn(false). | 284 * |
| 285 */ | 285 * @return true if this connector is low on resources. |
| 286 public int getConnections() ; | 286 */ |
| 287 | 287 public boolean isLowResources(); |
| 288 /* ------------------------------------------------------------ */ | |
| 289 /** | |
| 290 * @return Number of connections currently open that were opened | |
| 291 * since statsReset() called. Undefined if setStatsOn(false). | |
| 292 */ | |
| 293 public int getConnectionsOpen() ; | |
| 294 | |
| 295 /* ------------------------------------------------------------ */ | |
| 296 /** | |
| 297 * @return Maximum number of connections opened simultaneously | |
| 298 * since statsReset() called. Undefined if setStatsOn(false). | |
| 299 */ | |
| 300 public int getConnectionsOpenMax() ; | |
| 301 | |
| 302 /* ------------------------------------------------------------ */ | |
| 303 /** | |
| 304 * @return Maximum duration in milliseconds of an open connection | |
| 305 * since statsReset() called. Undefined if setStatsOn(false). | |
| 306 */ | |
| 307 public long getConnectionsDurationMax(); | |
| 308 | |
| 309 /* ------------------------------------------------------------ */ | |
| 310 /** | |
| 311 * @return Mean duration in milliseconds of open connections | |
| 312 * since statsReset() called. Undefined if setStatsOn(false). | |
| 313 */ | |
| 314 public double getConnectionsDurationMean() ; | |
| 315 | |
| 316 /* ------------------------------------------------------------ */ | |
| 317 /** | |
| 318 * @return Standard deviation of duration in milliseconds of | |
| 319 * open connections since statsReset() called. Undefined if | |
| 320 * setStatsOn(false). | |
| 321 */ | |
| 322 public double getConnectionsDurationStdDev() ; | |
| 323 | |
| 324 /* ------------------------------------------------------------ */ | |
| 325 /** | |
| 326 * @return Mean number of requests per connection | |
| 327 * since statsReset() called. Undefined if setStatsOn(false). | |
| 328 */ | |
| 329 public double getConnectionsRequestsMean() ; | |
| 330 | |
| 331 /* ------------------------------------------------------------ */ | |
| 332 /** | |
| 333 * @return Standard Deviation of number of requests per connection | |
| 334 * since statsReset() called. Undefined if setStatsOn(false). | |
| 335 */ | |
| 336 public double getConnectionsRequestsStdDev() ; | |
| 337 | |
| 338 /* ------------------------------------------------------------ */ | |
| 339 /** | |
| 340 * @return Maximum number of requests per connection | |
| 341 * since statsReset() called. Undefined if setStatsOn(false). | |
| 342 */ | |
| 343 public int getConnectionsRequestsMax(); | |
| 344 | |
| 345 /* ------------------------------------------------------------ */ | |
| 346 /** Reset statistics. | |
| 347 */ | |
| 348 public void statsReset(); | |
| 349 | |
| 350 /* ------------------------------------------------------------ */ | |
| 351 public void setStatsOn(boolean on); | |
| 352 | |
| 353 /* ------------------------------------------------------------ */ | |
| 354 /** | |
| 355 * @return True if statistics collection is turned on. | |
| 356 */ | |
| 357 public boolean getStatsOn(); | |
| 358 | |
| 359 /* ------------------------------------------------------------ */ | |
| 360 /** | |
| 361 * @return Timestamp stats were started at. | |
| 362 */ | |
| 363 public long getStatsOnMs(); | |
| 364 | |
| 365 | |
| 366 /* ------------------------------------------------------------ */ | |
| 367 /** Check if low on resources. | |
| 368 * For most connectors, low resources is measured by calling | |
| 369 * {@link ThreadPool#isLowOnThreads()} on the connector threadpool | |
| 370 * or the server threadpool if there is no connector threadpool. | |
| 371 * <p> | |
| 372 * For blocking connectors, low resources is used to trigger | |
| 373 * usage of {@link #getLowResourceMaxIdleTime()} for the timeout | |
| 374 * of an idle connection. | |
| 375 * <p> | |
| 376 * for non-blocking connectors, the number of connections is | |
| 377 * used instead of this method, to select the timeout of an | |
| 378 * idle connection. | |
| 379 * <p> | |
| 380 * For all connectors, low resources is used to trigger the | |
| 381 * usage of {@link #getLowResourceMaxIdleTime()} for read and | |
| 382 * write operations. | |
| 383 * | |
| 384 * @return true if this connector is low on resources. | |
| 385 */ | |
| 386 public boolean isLowResources(); | |
| 387 } | 288 } |
