Skip to content

Commit

Permalink
Refactor to a single ConnectionHandler implementation
Browse files Browse the repository at this point in the history
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1713256 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
markt-asf committed Nov 8, 2015
1 parent 64bfe23 commit e338caf
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 40 deletions.
16 changes: 12 additions & 4 deletions java/org/apache/coyote/AbstractProtocol.java
Expand Up @@ -657,9 +657,11 @@ public void destroy() {

// ------------------------------------------- Connection handler base class

protected abstract static class AbstractConnectionHandler<S,P extends Processor>
protected static class ConnectionHandler<S,P extends Processor>
implements AbstractEndpoint.Handler<S> {

private final AbstractProtocol<S> proto;

protected final RequestGroupInfo global = new RequestGroupInfo();
protected final AtomicLong registerCount = new AtomicLong(0);

Expand All @@ -669,7 +671,13 @@ protected abstract static class AbstractConnectionHandler<S,P extends Processor>
protected final RecycledProcessors<P,S> recycledProcessors =
new RecycledProcessors<>(this);

protected abstract AbstractProtocol<S> getProtocol();
public ConnectionHandler(AbstractProtocol<S> proto) {
this.proto = proto;
}

protected AbstractProtocol<S> getProtocol() {
return proto;
}

protected Log getLog() {
return getProtocol().getLog();
Expand Down Expand Up @@ -1010,10 +1018,10 @@ public final void pause() {
protected static class RecycledProcessors<P extends Processor, S>
extends SynchronizedStack<Processor> {

private final transient AbstractConnectionHandler<S,P> handler;
private final transient ConnectionHandler<S,P> handler;
protected final AtomicInteger size = new AtomicInteger(0);

public RecycledProcessors(AbstractConnectionHandler<S,P> handler) {
public RecycledProcessors(ConnectionHandler<S,P> handler) {
this.handler = handler;
}

Expand Down
18 changes: 1 addition & 17 deletions java/org/apache/coyote/ajp/AbstractAjpProtocol.java
Expand Up @@ -48,7 +48,7 @@ public AbstractAjpProtocol(AbstractEndpoint<S> endpoint) {
setSoTimeout(Constants.DEFAULT_CONNECTION_TIMEOUT);
// AJP does not use Send File
getEndpoint().setUseSendfile(false);
AjpConnectionHandler<S> cHandler = new AjpConnectionHandler<>(this);
ConnectionHandler<S,AjpProcessor> cHandler = new ConnectionHandler<>(this);
setHandler(cHandler);
getEndpoint().setHandler(cHandler);
}
Expand Down Expand Up @@ -175,20 +175,4 @@ protected Processor createUpgradeProcessor(SocketWrapperBase<?> socket,
// TODO should fail - throw IOE
return null;
}


protected static class AjpConnectionHandler<S>
extends AbstractConnectionHandler<S,AjpProcessor> {

private final AbstractAjpProtocol<S> proto;

public AjpConnectionHandler(AbstractAjpProtocol<S> proto) {
this.proto = proto;
}

@Override
protected AbstractAjpProtocol<S> getProtocol() {
return proto;
}
}
}
20 changes: 1 addition & 19 deletions java/org/apache/coyote/http11/AbstractHttp11Protocol.java
Expand Up @@ -52,7 +52,7 @@ public abstract class AbstractHttp11Protocol<S> extends AbstractProtocol<S> {
public AbstractHttp11Protocol(AbstractEndpoint<S> endpoint) {
super(endpoint);
setSoTimeout(Constants.DEFAULT_CONNECTION_TIMEOUT);
Http11ConnectionHandler<S> cHandler = new Http11ConnectionHandler<>(this);
ConnectionHandler<S,Http11Processor> cHandler = new ConnectionHandler<>(this);
setHandler(cHandler);
getEndpoint().setHandler(cHandler);
}
Expand Down Expand Up @@ -650,22 +650,4 @@ protected Processor createUpgradeProcessor(
return new UpgradeProcessorExternal(socket, leftoverInput, upgradeToken);
}
}


protected static class Http11ConnectionHandler<S>
extends AbstractConnectionHandler<S,Http11Processor> {

private final AbstractHttp11Protocol<S> proto;


protected Http11ConnectionHandler(AbstractHttp11Protocol<S> proto) {
this.proto = proto;
}


@Override
protected AbstractHttp11Protocol<S> getProtocol() {
return proto;
}
}
}

0 comments on commit e338caf

Please sign in to comment.