You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2006/05/20 18:33:44 UTC
svn commit: r408024 -
/jakarta/httpcomponents/httpcore/trunk/src/java/org/apache/http/protocol/HttpService.java
Author: olegk
Date: Sat May 20 09:33:42 2006
New Revision: 408024
URL: http://svn.apache.org/viewvc?rev=408024&view=rev
Log:
Added destory method to HttpService
Modified:
jakarta/httpcomponents/httpcore/trunk/src/java/org/apache/http/protocol/HttpService.java
Modified: jakarta/httpcomponents/httpcore/trunk/src/java/org/apache/http/protocol/HttpService.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/src/java/org/apache/http/protocol/HttpService.java?rev=408024&r1=408023&r2=408024&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/src/java/org/apache/http/protocol/HttpService.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/src/java/org/apache/http/protocol/HttpService.java Sat May 20 09:33:42 2006
@@ -61,6 +61,8 @@
private final HttpServerConnection conn;
private final ConnectionReuseStrategy connStrategy;
private final HttpContext context;
+
+ private volatile boolean destroyed = false;
private HttpParams params = null;
@@ -86,7 +88,7 @@
return this.conn.isOpen();
}
- private void closeConnection() {
+ protected void closeConnection() {
try {
this.conn.close();
} catch (IOException ex) {
@@ -99,65 +101,65 @@
BasicHttpResponse response = new BasicHttpResponse();
response.getParams().setDefaults(this.params);
try {
- HttpRequest request = this.conn.receiveRequestHeader(this.params);
- if (request instanceof HttpEntityEnclosingRequest) {
- if (((HttpEntityEnclosingRequest) request).expectContinue()) {
+ try {
+ HttpRequest request = this.conn.receiveRequestHeader(this.params);
+ if (request instanceof HttpEntityEnclosingRequest) {
+ if (((HttpEntityEnclosingRequest) request).expectContinue()) {
- logMessage("Expected 100 (Continue)");
-
- BasicHttpResponse ack = new BasicHttpResponse();
- ack.getParams().setDefaults(this.params);
- ack.setStatusCode(HttpStatus.SC_CONTINUE);
- this.conn.sendResponseHeader(ack);
- this.conn.flush();
+ logMessage("Expected 100 (Continue)");
+
+ BasicHttpResponse ack = new BasicHttpResponse();
+ ack.getParams().setDefaults(this.params);
+ ack.setStatusCode(HttpStatus.SC_CONTINUE);
+ this.conn.sendResponseHeader(ack);
+ this.conn.flush();
+ }
+ this.conn.receiveRequestEntity((HttpEntityEnclosingRequest) request);
}
- this.conn.receiveRequestEntity((HttpEntityEnclosingRequest) request);
- }
- preprocessRequest(request, this.context);
- logMessage("Request received");
-
- this.context.setAttribute(HttpExecutionContext.HTTP_REQUEST, request);
- this.context.setAttribute(HttpExecutionContext.HTTP_RESPONSE, response);
- doService(request, response);
-
- if (request instanceof HttpEntityEnclosingRequest) {
- // Make sure the request content is fully consumed
- HttpEntity entity = ((HttpEntityEnclosingRequest)request).getEntity();
- if (entity != null) {
- entity.consumeContent();
+ preprocessRequest(request, this.context);
+ logMessage("Request received");
+
+ this.context.setAttribute(HttpExecutionContext.HTTP_REQUEST, request);
+ this.context.setAttribute(HttpExecutionContext.HTTP_RESPONSE, response);
+ doService(request, response);
+
+ if (request instanceof HttpEntityEnclosingRequest) {
+ // Make sure the request content is fully consumed
+ HttpEntity entity = ((HttpEntityEnclosingRequest)request).getEntity();
+ if (entity != null) {
+ entity.consumeContent();
+ }
}
+
+ postprocessResponse(response, this.context);
+ } catch (ConnectionClosedException ex) {
+ logMessage("Client closed connection");
+ return;
+ } catch (HttpException ex) {
+ handleException(ex, response);
+ } catch (IOException ex) {
+ logIOException(ex);
+ return;
}
-
- postprocessResponse(response, this.context);
- } catch (ConnectionClosedException ex) {
- logMessage("Client closed connection");
- closeConnection();
- return;
- } catch (HttpException ex) {
- handleException(ex, response);
- } catch (IOException ex) {
- logIOException(ex);
- closeConnection();
- return;
- }
- try {
- this.conn.sendResponseHeader(response);
- this.conn.sendResponseEntity(response);
- this.conn.flush();
- logMessage("Response sent");
- } catch (HttpException ex) {
- logProtocolException(ex);
- closeConnection();
- return;
- } catch (IOException ex) {
- logIOException(ex);
- closeConnection();
- return;
- }
- if (!this.connStrategy.keepAlive(response)) {
- closeConnection();
- } else {
- logMessage("Connection kept alive");
+ try {
+ this.conn.sendResponseHeader(response);
+ this.conn.sendResponseEntity(response);
+ this.conn.flush();
+ logMessage("Response sent");
+ } catch (HttpException ex) {
+ logProtocolException(ex);
+ return;
+ } catch (IOException ex) {
+ logIOException(ex);
+ return;
+ }
+ if (!this.connStrategy.keepAlive(response)) {
+ closeConnection();
+ } else {
+ logMessage("Connection kept alive");
+ }
+ } finally {
+ destroy();
}
}
@@ -191,4 +193,14 @@
protected void logProtocolException(final HttpException ex) {
}
+
+ public void destroy() {
+ this.destroyed = true;
+ closeConnection();
+ }
+
+ public boolean isDestroyed() {
+ return this.destroyed;
+ }
+
}