Mercurial Hosting > luan
comparison src/org/eclipse/jetty/server/Connector.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 | ad292e148964 |
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.server; | |
| 20 | |
| 21 import java.io.IOException; | |
| 22 | |
| 23 import org.eclipse.jetty.io.Buffers; | |
| 24 import org.eclipse.jetty.io.EndPoint; | |
| 25 import org.eclipse.jetty.util.component.LifeCycle; | |
| 26 import org.eclipse.jetty.util.thread.ThreadPool; | |
| 27 | |
| 28 /** HTTP Connector. | |
| 29 * Implementations of this interface provide connectors for the HTTP protocol. | |
| 30 * A connector receives requests (normally from a socket) and calls the | |
| 31 * handle method of the Handler object. These operations are performed using | |
| 32 * threads from the ThreadPool set on the connector. | |
| 33 * | |
| 34 * When a connector is registered with an instance of Server, then the server | |
| 35 * will set itself as both the ThreadPool and the Handler. Note that a connector | |
| 36 * can be used without a Server if a thread pool and handler are directly provided. | |
| 37 * | |
| 38 * | |
| 39 * | |
| 40 */ | |
| 41 /** | |
| 42 * @author gregw | |
| 43 * | |
| 44 */ | |
| 45 public interface Connector extends LifeCycle | |
| 46 { | |
| 47 /* ------------------------------------------------------------ */ | |
| 48 /** | |
| 49 * @return the name of the connector. Defaults to the HostName:port | |
| 50 */ | |
| 51 String getName(); | |
| 52 | |
| 53 /* ------------------------------------------------------------ */ | |
| 54 /** | |
| 55 * Opens the connector | |
| 56 * @throws IOException | |
| 57 */ | |
| 58 void open() throws IOException; | |
| 59 | |
| 60 /* ------------------------------------------------------------ */ | |
| 61 void close() throws IOException; | |
| 62 | |
| 63 /* ------------------------------------------------------------ */ | |
| 64 void setServer(Server server); | |
| 65 | |
| 66 /* ------------------------------------------------------------ */ | |
| 67 Server getServer(); | |
| 68 | |
| 69 /* ------------------------------------------------------------ */ | |
| 70 /** | |
| 71 * @return Returns the request header buffer size in bytes. | |
| 72 */ | |
| 73 int getRequestHeaderSize(); | |
| 74 | |
| 75 /* ------------------------------------------------------------ */ | |
| 76 /** | |
| 77 * Set the size of the buffer to be used for request headers. | |
| 78 * @param size The size in bytes. | |
| 79 */ | |
| 80 void setRequestHeaderSize(int size); | |
| 81 | |
| 82 /* ------------------------------------------------------------ */ | |
| 83 /** | |
| 84 * @return Returns the response header buffer size in bytes. | |
| 85 */ | |
| 86 int getResponseHeaderSize(); | |
| 87 | |
| 88 /* ------------------------------------------------------------ */ | |
| 89 /** | |
| 90 * Set the size of the buffer to be used for request headers. | |
| 91 * @param size The size in bytes. | |
| 92 */ | |
| 93 void setResponseHeaderSize(int size); | |
| 94 | |
| 95 | |
| 96 /* ------------------------------------------------------------ */ | |
| 97 /** | |
| 98 * @return factory for request buffers | |
| 99 */ | |
| 100 Buffers getRequestBuffers(); | |
| 101 | |
| 102 /* ------------------------------------------------------------ */ | |
| 103 /** | |
| 104 * @return factory for response buffers | |
| 105 */ | |
| 106 Buffers getResponseBuffers(); | |
| 107 | |
| 108 | |
| 109 /* ------------------------------------------------------------ */ | |
| 110 /** | |
| 111 * @return Returns the requestBufferSize. | |
| 112 */ | |
| 113 int getRequestBufferSize(); | |
| 114 | |
| 115 /* ------------------------------------------------------------ */ | |
| 116 /** | |
| 117 * Set the size of the content buffer for receiving requests. | |
| 118 * These buffers are only used for active connections that have | |
| 119 * requests with bodies that will not fit within the header buffer. | |
| 120 * @param requestBufferSize The requestBufferSize to set. | |
| 121 */ | |
| 122 void setRequestBufferSize(int requestBufferSize); | |
| 123 | |
| 124 /* ------------------------------------------------------------ */ | |
| 125 /** | |
| 126 * @return Returns the responseBufferSize. | |
| 127 */ | |
| 128 int getResponseBufferSize(); | |
| 129 | |
| 130 /* ------------------------------------------------------------ */ | |
| 131 /** | |
| 132 * Set the size of the content buffer for sending responses. | |
| 133 * These buffers are only used for active connections that are sending | |
| 134 * responses with bodies that will not fit within the header buffer. | |
| 135 * @param responseBufferSize The responseBufferSize to set. | |
| 136 */ | |
| 137 void setResponseBufferSize(int responseBufferSize); | |
| 138 | |
| 139 | |
| 140 /* ------------------------------------------------------------ */ | |
| 141 /** | |
| 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()} | |
| 144 */ | |
| 145 int getIntegralPort(); | |
| 146 | |
| 147 /* ------------------------------------------------------------ */ | |
| 148 /** | |
| 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()} | |
| 151 */ | |
| 152 String getIntegralScheme(); | |
| 153 | |
| 154 /* ------------------------------------------------------------ */ | |
| 155 /** | |
| 156 * @param request A request | |
| 157 * @return true if the request is integral. This normally means the https schema has been used. | |
| 158 */ | |
| 159 boolean isIntegral(Request request); | |
| 160 | |
| 161 /* ------------------------------------------------------------ */ | |
| 162 /** | |
| 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()} | |
| 165 */ | |
| 166 int getConfidentialPort(); | |
| 167 | |
| 168 | |
| 169 /* ------------------------------------------------------------ */ | |
| 170 /** | |
| 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()} | |
| 173 */ | |
| 174 String getConfidentialScheme(); | |
| 175 | |
| 176 /* ------------------------------------------------------------ */ | |
| 177 /** | |
| 178 * @param request A request | |
| 179 * @return true if the request is confidential. This normally means the https schema has been used. | |
| 180 */ | |
| 181 boolean isConfidential(Request request); | |
| 182 | |
| 183 /* ------------------------------------------------------------ */ | |
| 184 /** Customize a request for an endpoint. | |
| 185 * Called on every request to allow customization of the request for | |
| 186 * the particular endpoint (eg security properties from a SSL connection). | |
| 187 * @param endpoint | |
| 188 * @param request | |
| 189 * @throws IOException | |
| 190 */ | |
| 191 void customize(EndPoint endpoint, Request request) throws IOException; | |
| 192 | |
| 193 /* ------------------------------------------------------------ */ | |
| 194 /** Persist an endpoint. | |
| 195 * Called after every request if the connection is to remain open. | |
| 196 * @param endpoint | |
| 197 * @throws IOException | |
| 198 */ | |
| 199 void persist(EndPoint endpoint) throws IOException; | |
| 200 | |
| 201 /* ------------------------------------------------------------ */ | |
| 202 /** | |
| 203 * @return The hostname representing the interface to which | |
| 204 * this connector will bind, or null for all interfaces. | |
| 205 */ | |
| 206 String getHost(); | |
| 207 | |
| 208 /* ------------------------------------------------------------ */ | |
| 209 /** | |
| 210 * Set the hostname of the interface to bind to. | |
| 211 * @param hostname The hostname representing the interface to which | |
| 212 * this connector will bind, or null for all interfaces. | |
| 213 */ | |
| 214 void setHost(String hostname); | |
| 215 | |
| 216 /* ------------------------------------------------------------ */ | |
| 217 /** | |
| 218 * @param port The port to listen of for connections or 0 if any available | |
| 219 * port may be used. | |
| 220 */ | |
| 221 void setPort(int port); | |
| 222 | |
| 223 /* ------------------------------------------------------------ */ | |
| 224 /** | |
| 225 * @return The configured port for the connector or 0 if any available | |
| 226 * port may be used. | |
| 227 */ | |
| 228 int getPort(); | |
| 229 | |
| 230 /* ------------------------------------------------------------ */ | |
| 231 /** | |
| 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. | |
| 234 */ | |
| 235 int getLocalPort(); | |
| 236 | |
| 237 /* ------------------------------------------------------------ */ | |
| 238 /** | |
| 239 * @return Max Idle time for connections in milliseconds | |
| 240 */ | |
| 241 int getMaxIdleTime(); | |
| 242 | |
| 243 /** | |
| 244 * @param ms Max Idle time for connections in milliseconds | |
| 245 */ | |
| 246 void setMaxIdleTime(int ms); | |
| 247 | |
| 248 /* ------------------------------------------------------------ */ | |
| 249 int getLowResourceMaxIdleTime(); | |
| 250 void setLowResourceMaxIdleTime(int ms); | |
| 251 | |
| 252 /* ------------------------------------------------------------ */ | |
| 253 /** | |
| 254 * @return the underlying socket, channel, buffer etc. for the connector. | |
| 255 */ | |
| 256 Object getConnection(); | |
| 257 | |
| 258 | |
| 259 /* ------------------------------------------------------------ */ | |
| 260 /** | |
| 261 * @return true if names resolution should be done. | |
| 262 */ | |
| 263 boolean getResolveNames(); | |
| 264 | |
| 265 | |
| 266 | |
| 267 /* ------------------------------------------------------------ */ | |
| 268 /** | |
| 269 * @return Get the number of requests handled by this connector | |
| 270 * since last call of statsReset(). If setStatsOn(false) then this | |
| 271 * is undefined. | |
| 272 */ | |
| 273 public int getRequests(); | |
| 274 | |
| 275 /* ------------------------------------------------------------ */ | |
| 276 /** | |
| 277 * @return Returns the connectionsDurationTotal. | |
| 278 */ | |
| 279 public long getConnectionsDurationTotal(); | |
| 280 | |
| 281 /* ------------------------------------------------------------ */ | |
| 282 /** | |
| 283 * @return Number of connections accepted by the server since | |
| 284 * statsReset() called. Undefined if setStatsOn(false). | |
| 285 */ | |
| 286 public int getConnections() ; | |
| 287 | |
| 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 } |
