Skip to content

Commit

Permalink
Move Processor creation from the ConnectionHandler to the Protocol
Browse files Browse the repository at this point in the history
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1713254 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
markt-asf committed Nov 8, 2015
1 parent 6e058c8 commit 6387ba1
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 28 deletions.
16 changes: 12 additions & 4 deletions java/org/apache/coyote/AbstractProtocol.java
Expand Up @@ -419,6 +419,15 @@ protected void setHandler(Handler<S> handler) {
protected abstract UpgradeProtocol getNegotiatedProtocol(String name); protected abstract UpgradeProtocol getNegotiatedProtocol(String name);




/**
* Create and configure a new Processor instance for the current protocol
* implementation.
*
* @return A fully configured Processor instance that is ready to use
*/
protected abstract Processor createProcessor();


// ----------------------------------------------------- JMX related methods // ----------------------------------------------------- JMX related methods


protected String domain; protected String domain;
Expand Down Expand Up @@ -722,7 +731,8 @@ public SocketState process(SocketWrapperBase<S> wrapper, SocketStatus status) {
processor = recycledProcessors.pop(); processor = recycledProcessors.pop();
} }
if (processor == null) { if (processor == null) {
processor = createProcessor(); processor = getProtocol().createProcessor();
register(processor);
} }


processor.setSslSupport( processor.setSslSupport(
Expand Down Expand Up @@ -867,8 +877,6 @@ public SocketState process(SocketWrapperBase<S> wrapper, SocketStatus status) {
return SocketState.CLOSED; return SocketState.CLOSED;
} }


protected abstract P createProcessor();



protected void longPoll(SocketWrapperBase<?> socket, Processor processor) { protected void longPoll(SocketWrapperBase<?> socket, Processor processor) {
if (!processor.isAsync()) { if (!processor.isAsync()) {
Expand Down Expand Up @@ -930,7 +938,7 @@ protected abstract Processor createUpgradeProcessor(
UpgradeToken upgradeToken) throws IOException; UpgradeToken upgradeToken) throws IOException;




protected void register(AbstractProcessor processor) { protected void register(Processor processor) {
if (getProtocol().getDomain() != null) { if (getProtocol().getDomain() != null) {
synchronized (this) { synchronized (this) {
try { try {
Expand Down
16 changes: 6 additions & 10 deletions java/org/apache/coyote/ajp/AbstractAjpProtocol.java
Expand Up @@ -19,6 +19,7 @@
import java.nio.ByteBuffer; import java.nio.ByteBuffer;


import org.apache.coyote.AbstractProtocol; import org.apache.coyote.AbstractProtocol;
import org.apache.coyote.Processor;
import org.apache.coyote.UpgradeProtocol; import org.apache.coyote.UpgradeProtocol;
import org.apache.coyote.UpgradeToken; import org.apache.coyote.UpgradeToken;
import org.apache.tomcat.util.net.AbstractEndpoint; import org.apache.tomcat.util.net.AbstractEndpoint;
Expand Down Expand Up @@ -155,15 +156,19 @@ public UpgradeProtocol[] findUpgradeProtocols() {
} }




protected void configureProcessor(AjpProcessor processor) { @Override
protected Processor createProcessor() {
AjpProcessor processor = new AjpProcessor(getPacketSize(), getEndpoint());
processor.setAdapter(getAdapter()); processor.setAdapter(getAdapter());
processor.setTomcatAuthentication(getTomcatAuthentication()); processor.setTomcatAuthentication(getTomcatAuthentication());
processor.setTomcatAuthorization(getTomcatAuthorization()); processor.setTomcatAuthorization(getTomcatAuthorization());
processor.setRequiredSecret(requiredSecret); processor.setRequiredSecret(requiredSecret);
processor.setKeepAliveTimeout(getKeepAliveTimeout()); processor.setKeepAliveTimeout(getKeepAliveTimeout());
processor.setClientCertProvider(getClientCertProvider()); processor.setClientCertProvider(getClientCertProvider());
return processor;
} }



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


Expand All @@ -179,15 +184,6 @@ protected AbstractAjpProtocol<S> getProtocol() {
} }




@Override
protected AjpProcessor createProcessor() {
AjpProcessor processor = new AjpProcessor(proto.getPacketSize(), proto.getEndpoint());
proto.configureProcessor(processor);
register(processor);
return processor;
}


@Override @Override
protected AjpProcessor createUpgradeProcessor(SocketWrapperBase<?> socket, protected AjpProcessor createUpgradeProcessor(SocketWrapperBase<?> socket,
ByteBuffer leftoverInput, UpgradeToken upgradeToken) { ByteBuffer leftoverInput, UpgradeToken upgradeToken) {
Expand Down
20 changes: 6 additions & 14 deletions java/org/apache/coyote/http11/AbstractHttp11Protocol.java
Expand Up @@ -618,8 +618,11 @@ public void setTrustManagerClassName(String trustManagerClassName) {


// ------------------------------------------------------------- Common code // ------------------------------------------------------------- Common code


// Common configuration required for all new HTTP11 processors @Override
protected void configureProcessor(Http11Processor processor) { protected Processor createProcessor() {
Http11Processor processor = new Http11Processor(getMaxHttpHeaderSize(), getEndpoint(),
getMaxTrailerSize(), allowedTrailerHeaders, getMaxExtensionSize(),
getMaxSwallowSize(), httpUpgradeProtocols);
processor.setAdapter(getAdapter()); processor.setAdapter(getAdapter());
processor.setMaxKeepAliveRequests(getMaxKeepAliveRequests()); processor.setMaxKeepAliveRequests(getMaxKeepAliveRequests());
processor.setConnectionUploadTimeout(getConnectionUploadTimeout()); processor.setConnectionUploadTimeout(getConnectionUploadTimeout());
Expand All @@ -631,6 +634,7 @@ protected void configureProcessor(Http11Processor processor) {
processor.setRestrictedUserAgents(getRestrictedUserAgents()); processor.setRestrictedUserAgents(getRestrictedUserAgents());
processor.setMaxSavePostSize(getMaxSavePostSize()); processor.setMaxSavePostSize(getMaxSavePostSize());
processor.setServer(getServer()); processor.setServer(getServer());
return processor;
} }




Expand All @@ -651,18 +655,6 @@ protected AbstractHttp11Protocol<S> getProtocol() {
} }




@Override
public Http11Processor createProcessor() {
Http11Processor processor = new Http11Processor(
proto.getMaxHttpHeaderSize(), proto.getEndpoint(), proto.getMaxTrailerSize(),
proto.allowedTrailerHeaders, proto.getMaxExtensionSize(),
proto.getMaxSwallowSize(), proto.httpUpgradeProtocols);
proto.configureProcessor(processor);
register(processor);
return processor;
}


@Override @Override
protected Processor createUpgradeProcessor( protected Processor createUpgradeProcessor(
SocketWrapperBase<?> socket, ByteBuffer leftoverInput, SocketWrapperBase<?> socket, ByteBuffer leftoverInput,
Expand Down

0 comments on commit 6387ba1

Please sign in to comment.