You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/02/20 22:51:57 UTC
svn commit: r1448432 - in /tomcat/trunk/java/org/apache/tomcat/websocket:
WsRemoteEndpointBase.java WsSession.java WsWebSocketContainer.java
server/WsProtocolHandler.java
Author: markt
Date: Wed Feb 20 21:51:56 2013
New Revision: 1448432
URL: http://svn.apache.org/r1448432
Log:
Make the list of encoders available where they are needed
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointBase.java
tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java
tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsProtocolHandler.java
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointBase.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointBase.java?rev=1448432&r1=1448431&r2=1448432&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointBase.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointBase.java Wed Feb 20 21:51:56 2013
@@ -25,6 +25,8 @@ import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
import java.nio.charset.CoderResult;
import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Queue;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
@@ -34,6 +36,7 @@ import java.util.concurrent.TimeoutExcep
import java.util.concurrent.atomic.AtomicBoolean;
import javax.websocket.EncodeException;
+import javax.websocket.Encoder;
import javax.websocket.RemoteEndpoint;
import javax.websocket.SendHandler;
import javax.websocket.SendResult;
@@ -69,6 +72,7 @@ public abstract class WsRemoteEndpointBa
private final AtomicBoolean batchingAllowed = new AtomicBoolean(false);
private volatile long asyncSendTimeout = -1;
private WsSession wsSession;
+ private List<EncoderEntry> encoderEntries = new ArrayList<>();
@Override
@@ -447,6 +451,15 @@ public abstract class WsRemoteEndpointBa
}
+ protected void setEncoders(List<Encoder> encoders) {
+ encoderEntries.clear();
+ for (Encoder encoder : encoders) {
+ EncoderEntry entry =
+ new EncoderEntry(Util.getEncoderType(encoder), encoder);
+ encoderEntries.add(entry);
+ }
+ }
+
protected abstract void doWrite(SendHandler handler, ByteBuffer... data);
protected abstract boolean isMasked();
protected abstract void close();
@@ -772,4 +785,24 @@ public abstract class WsRemoteEndpointBa
buffer.clear();
}
}
+
+
+ private static class EncoderEntry {
+
+ private final Class<?> clazz;
+ private final Encoder encoder;
+
+ public EncoderEntry(Class<?> clazz, Encoder encoder) {
+ this.clazz = clazz;
+ this.encoder = encoder;
+ }
+
+ public Class<?> getClazz() {
+ return clazz;
+ }
+
+ public Encoder getEncoder() {
+ return encoder;
+ }
+ }
}
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java?rev=1448432&r1=1448431&r2=1448432&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java Wed Feb 20 21:51:56 2013
@@ -31,6 +31,7 @@ import java.util.concurrent.ConcurrentHa
import javax.websocket.CloseReason;
import javax.websocket.CloseReason.CloseCodes;
+import javax.websocket.Encoder;
import javax.websocket.Endpoint;
import javax.websocket.Extension;
import javax.websocket.MessageHandler;
@@ -88,7 +89,7 @@ public class WsSession implements Sessio
WsWebSocketContainer wsWebSocketContainer,
WsRequest request, String subProtocol,
Map<String,String> pathParameters,
- boolean secure) {
+ boolean secure, List<Encoder> encoders) {
this.localEndpoint = localEndpoint;
this.wsRemoteEndpoint = wsRemoteEndpoint;
this.wsRemoteEndpoint.setSession(this);
@@ -106,6 +107,7 @@ public class WsSession implements Sessio
this.subProtocol = subProtocol;
this.pathParameters = pathParameters;
this.secure = secure;
+ this.wsRemoteEndpoint.setEncoders(encoders);
}
@@ -387,6 +389,7 @@ public class WsSession implements Sessio
lastActive = System.currentTimeMillis();
}
+
protected void expire() {
long timeout = sessionIdleTimeout;
if (timeout < 1) {
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java?rev=1448432&r1=1448431&r2=1448432&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java Wed Feb 20 21:51:56 2013
@@ -173,7 +173,8 @@ public class WsWebSocketContainer
}
WsSession wsSession = new WsSession(endpoint, wsRemoteEndpointClient,
- this, null, subProtocol, Collections.EMPTY_MAP, false);
+ this, null, subProtocol, Collections.EMPTY_MAP, false,
+ clientEndpointConfiguration.getEncoders());
endpoint.onOpen(wsSession, clientEndpointConfiguration);
registerSession(clazz, wsSession);
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsProtocolHandler.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsProtocolHandler.java?rev=1448432&r1=1448431&r2=1448432&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsProtocolHandler.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsProtocolHandler.java Wed Feb 20 21:51:56 2013
@@ -96,7 +96,7 @@ public class WsProtocolHandler implement
new WsRemoteEndpointServer(sos, webSocketContainer);
wsSession = new WsSession(ep, wsRemoteEndpointServer,
webSocketContainer, request, subProtocol, pathParameters,
- secure);
+ secure, endpointConfig.getEncoders());
WsFrameServer wsFrame = new WsFrameServer(
sis,
wsSession);
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org