Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2011-09-01 13:33:05 +0000
committerGreg Wilkins2011-09-01 13:33:05 +0000
commite68d056b0f8406a47a138e8c17a2d36418733baa (patch)
tree29d87d14edaf804eb835a64704ecf9a5f01c4947
parent0b489b88775e2a1541b2ef6b780f5a77a1f33b7c (diff)
downloadorg.eclipse.jetty.project-e68d056b0f8406a47a138e8c17a2d36418733baa.tar.gz
org.eclipse.jetty.project-e68d056b0f8406a47a138e8c17a2d36418733baa.tar.xz
org.eclipse.jetty.project-e68d056b0f8406a47a138e8c17a2d36418733baa.zip
setters for max message size in client factory
-rw-r--r--jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocket.java4
-rw-r--r--jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketClient.java66
-rw-r--r--jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketClientFactory.java20
-rw-r--r--jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD00.java4
-rw-r--r--jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD06.java4
-rw-r--r--jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD12.java8
-rw-r--r--jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD13.java8
-rw-r--r--jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketClientTest.java3
-rw-r--r--jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketMessageD12Test.java2
-rw-r--r--jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketMessageD13Test.java2
10 files changed, 84 insertions, 37 deletions
diff --git a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocket.java b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocket.java
index e4667f0a2a..618f9663f5 100644
--- a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocket.java
+++ b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocket.java
@@ -161,9 +161,9 @@ public interface WebSocket
byte continuationOpcode();
byte finMask();
String getProtocol();
- void setFakeFragments(boolean fake);
+ void setAllowFrameFragmentation(boolean allowFragmentation);
- boolean isFakeFragments();
+ boolean isAllowFrameFragmentation();
boolean isControl(byte opcode);
boolean isText(byte opcode);
boolean isBinary(byte opcode);
diff --git a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketClient.java b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketClient.java
index 2bbf2ff428..50bad287b6 100644
--- a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketClient.java
+++ b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketClient.java
@@ -66,6 +66,8 @@ public class WebSocketClient
private String _origin;
private String _protocol;
private int _maxIdleTime=-1;
+ private int _maxTextMessageSize=16*1024;
+ private int _maxBinaryMessageSize=-1;
private MaskGen _maskGen;
private SocketAddress _bindAddress;
@@ -229,6 +231,46 @@ public class WebSocketClient
/* ------------------------------------------------------------ */
/**
+ * @return The initial maximum text message size (in characters) for a connection
+ */
+ public int getMaxTextMessageSize()
+ {
+ return _maxTextMessageSize;
+ }
+
+ /* ------------------------------------------------------------ */
+ /**
+ * Set the initial maximum text message size for a connection. This can be changed by
+ * the application calling {@link WebSocket.Connection#setMaxTextMessageSize(int)}.
+ * @param maxTextMessageSize The default maximum text message size (in characters) for a connection
+ */
+ public void setMaxTextMessageSize(int maxTextMessageSize)
+ {
+ _maxTextMessageSize = maxTextMessageSize;
+ }
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return The initial maximum binary message size (in bytes) for a connection
+ */
+ public int getMaxBinaryMessageSize()
+ {
+ return _maxBinaryMessageSize;
+ }
+
+ /* ------------------------------------------------------------ */
+ /**
+ * Set the initial maximum binary message size for a connection. This can be changed by
+ * the application calling {@link WebSocket.Connection#setMaxBinaryMessageSize(int)}.
+ * @param maxTextMessageSize The default maximum binary message size (in bytes) for a connection
+ */
+ public void setMaxBinaryMessageSize(int maxBinaryMessageSize)
+ {
+ _maxBinaryMessageSize = maxBinaryMessageSize;
+ }
+
+ /* ------------------------------------------------------------ */
+ /**
* <p>Opens a websocket connection to the URI and blocks until the connection is accepted or there is an error.</p>
*
* @param uri The URI to connect to.
@@ -285,11 +327,10 @@ public class WebSocketClient
if (_bindAddress != null)
channel.socket().bind(_bindAddress);
channel.socket().setTcpNoDelay(true);
- int maxIdleTime = getMaxIdleTime();
InetSocketAddress address=new InetSocketAddress(uri.getHost(),uri.getPort());
- final WebSocketFuture holder=new WebSocketFuture(websocket,uri,_protocol,_origin,_maskGen,maxIdleTime,_cookies,_extensions,channel);
+ final WebSocketFuture holder=new WebSocketFuture(websocket,uri,this,channel);
channel.configureBlocking(false);
channel.connect(address);
@@ -309,6 +350,8 @@ public class WebSocketClient
final String _origin;
final MaskGen _maskGen;
final int _maxIdleTime;
+ final int _maxTextMessageSize;
+ final int _maxBinaryMessageSize;
final Map<String,String> _cookies;
final List<String> _extensions;
final CountDownLatch _done = new CountDownLatch(1);
@@ -317,16 +360,18 @@ public class WebSocketClient
WebSocketConnection _connection;
Throwable _exception;
- private WebSocketFuture(WebSocket websocket, URI uri, String protocol, String origin, MaskGen maskGen, int maxIdleTime, Map<String,String> cookies,List<String> extensions, ByteChannel channel)
+ private WebSocketFuture(WebSocket websocket, URI uri, WebSocketClient client, ByteChannel channel)
{
_websocket=websocket;
_uri=uri;
- _protocol=protocol;
- _origin=origin;
- _maskGen=maskGen;
- _maxIdleTime=maxIdleTime;
- _cookies=cookies;
- _extensions=extensions;
+ _protocol=client._protocol;
+ _origin=client._origin;
+ _maskGen=client._maskGen;
+ _maxIdleTime=client._maxIdleTime;
+ _maxTextMessageSize=client._maxTextMessageSize;
+ _maxBinaryMessageSize=client._maxBinaryMessageSize;
+ _cookies=client._cookies;
+ _extensions=client._extensions;
_channel=channel;
}
@@ -334,6 +379,9 @@ public class WebSocketClient
{
try
{
+ connection.getConnection().setMaxTextMessageSize(_maxTextMessageSize);
+ connection.getConnection().setMaxBinaryMessageSize(_maxBinaryMessageSize);
+
synchronized (this)
{
if (_channel!=null)
diff --git a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketClientFactory.java b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketClientFactory.java
index c9743db934..fdd03feaf3 100644
--- a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketClientFactory.java
+++ b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketClientFactory.java
@@ -258,7 +258,7 @@ public class WebSocketClientFactory extends AggregateLifeCycle
class HandshakeConnection extends AbstractConnection
{
private final SelectChannelEndPoint _endp;
- private final WebSocketClient.WebSocketFuture _holder;
+ private final WebSocketClient.WebSocketFuture _future;
private final String _key;
private final HttpParser _parser;
private String _accept;
@@ -268,7 +268,7 @@ public class WebSocketClientFactory extends AggregateLifeCycle
{
super(endpoint,System.currentTimeMillis());
_endp=endpoint;
- _holder=future;
+ _future=future;
byte[] bytes=new byte[16];
__random.nextBytes(bytes);
@@ -314,7 +314,7 @@ public class WebSocketClientFactory extends AggregateLifeCycle
}
});
- String path=_holder.getURI().getPath();
+ String path=_future.getURI().getPath();
if (path==null || path.length()==0)
path="/";
@@ -322,7 +322,7 @@ public class WebSocketClientFactory extends AggregateLifeCycle
String request=
"GET "+path+" HTTP/1.1\r\n"+
- "Host: "+future.getURI().getHost()+":"+_holder.getURI().getPort()+"\r\n"+
+ "Host: "+future.getURI().getHost()+":"+_future.getURI().getPort()+"\r\n"+
"Upgrade: websocket\r\n"+
"Connection: Upgrade\r\n"+
"Sec-WebSocket-Key: "+_key+"\r\n"+
@@ -366,7 +366,7 @@ public class WebSocketClientFactory extends AggregateLifeCycle
switch (_parser.parseAvailable())
{
case -1:
- _holder.handshakeFailed(new IOException("Incomplete handshake response"));
+ _future.handshakeFailed(new IOException("Incomplete handshake response"));
return this;
case 0:
return this;
@@ -383,14 +383,14 @@ public class WebSocketClientFactory extends AggregateLifeCycle
else
{
Buffer header=_parser.getHeaderBuffer();
- MaskGen maskGen=_holder.getMaskGen();
- WebSocketConnectionD13 connection = new WebSocketConnectionD13(_holder.getWebSocket(),_endp,_buffers,System.currentTimeMillis(),_holder.getMaxIdleTime(),_holder.getProtocol(),null,10,maskGen);
+ MaskGen maskGen=_future.getMaskGen();
+ WebSocketConnectionD13 connection = new WebSocketConnectionD13(_future.getWebSocket(),_endp,_buffers,System.currentTimeMillis(),_future.getMaxIdleTime(),_future.getProtocol(),null,10,maskGen);
if (header.hasContent())
connection.fillBuffersFrom(header);
_buffers.returnBuffer(header);
- _holder.onConnection(connection);
+ _future.onConnection(connection);
return connection;
}
@@ -413,9 +413,9 @@ public class WebSocketClientFactory extends AggregateLifeCycle
public void closed()
{
if (_error!=null)
- _holder.handshakeFailed(new ProtocolException(_error));
+ _future.handshakeFailed(new ProtocolException(_error));
else
- _holder.handshakeFailed(new EOFException());
+ _future.handshakeFailed(new EOFException());
}
}
}
diff --git a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD00.java b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD00.java
index 445fd0dc6e..b8e69c8e50 100644
--- a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD00.java
+++ b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD00.java
@@ -557,11 +557,11 @@ public class WebSocketConnectionD00 extends AbstractConnection implements WebSoc
return 0;
}
- public void setFakeFragments(boolean fake)
+ public void setAllowFrameFragmentation(boolean allowFragmentation)
{
}
- public boolean isFakeFragments()
+ public boolean isAllowFrameFragmentation()
{
return false;
}
diff --git a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD06.java b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD06.java
index 74395a0a2f..7cfd493e87 100644
--- a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD06.java
+++ b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD06.java
@@ -514,11 +514,11 @@ public class WebSocketConnectionD06 extends AbstractConnection implements WebSoc
return this.getClass().getSimpleName()+"@"+_endp.getLocalAddr()+":"+_endp.getLocalPort()+"<->"+_endp.getRemoteAddr()+":"+_endp.getRemotePort();
}
- public void setFakeFragments(boolean fake)
+ public void setAllowFrameFragmentation(boolean allowFragmentation)
{
}
- public boolean isFakeFragments()
+ public boolean isAllowFrameFragmentation()
{
return false;
}
diff --git a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD12.java b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD12.java
index d94ae7c6fc..d8d5e61859 100644
--- a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD12.java
+++ b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD12.java
@@ -588,13 +588,13 @@ public class WebSocketConnectionD12 extends AbstractConnection implements WebSoc
}
/* ------------------------------------------------------------ */
- public void setFakeFragments(boolean fake)
+ public void setAllowFrameFragmentation(boolean allowFragmentation)
{
- _parser.setFakeFragments(fake);
+ _parser.setFakeFragments(allowFragmentation);
}
/* ------------------------------------------------------------ */
- public boolean isFakeFragments()
+ public boolean isAllowFrameFragmentation()
{
return _parser.isFakeFragments();
}
@@ -727,7 +727,7 @@ public class WebSocketConnectionD12 extends AbstractConnection implements WebSoc
_onTextMessage.onMessage(buffer.toString(StringUtil.__UTF8));
else
{
- LOG.warn("Frame discarded. Text aggregation disabed for {}",_endp);
+ LOG.warn("Frame discarded. Text aggregation disabled for {}",_endp);
_connection.close(WebSocketConnectionD12.CLOSE_BADDATA,"Text frame aggregation disabled");
}
}
diff --git a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD13.java b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD13.java
index c89990cded..e65f7879e6 100644
--- a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD13.java
+++ b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD13.java
@@ -592,13 +592,13 @@ public class WebSocketConnectionD13 extends AbstractConnection implements WebSoc
}
/* ------------------------------------------------------------ */
- public void setFakeFragments(boolean fake)
+ public void setAllowFrameFragmentation(boolean allowFragmentation)
{
- _parser.setFakeFragments(fake);
+ _parser.setFakeFragments(allowFragmentation);
}
/* ------------------------------------------------------------ */
- public boolean isFakeFragments()
+ public boolean isAllowFrameFragmentation()
{
return _parser.isFakeFragments();
}
@@ -731,7 +731,7 @@ public class WebSocketConnectionD13 extends AbstractConnection implements WebSoc
_onTextMessage.onMessage(buffer.toString(StringUtil.__UTF8));
else
{
- LOG.warn("Frame discarded. Text aggregation disabed for {}",_endp);
+ LOG.warn("Frame discarded. Text aggregation disabled for {}",_endp);
_connection.close(WebSocketConnectionD13.CLOSE_POLICY_VIOLATION,"Text frame aggregation disabled");
}
}
diff --git a/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketClientTest.java b/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketClientTest.java
index 4268e02f85..10d3e5c707 100644
--- a/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketClientTest.java
+++ b/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketClientTest.java
@@ -53,7 +53,6 @@ public class WebSocketClientTest
_factory.stop();
}
- @Ignore
@Test
public void testMessageBiggerThanBufferSize() throws Exception
{
@@ -73,7 +72,7 @@ public class WebSocketClientTest
public void onMessage(String data)
{
- System.out.println("data = " + data);
+ // System.out.println("data = " + data);
dataLatch.countDown();
}
diff --git a/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketMessageD12Test.java b/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketMessageD12Test.java
index 917eff18d1..8003709a3e 100644
--- a/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketMessageD12Test.java
+++ b/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketMessageD12Test.java
@@ -663,7 +663,7 @@ public class WebSocketMessageD12Test
assertNotNull(__serverWebSocket.connection);
__serverWebSocket.getConnection().setMaxTextMessageSize(10*1024);
- __serverWebSocket.getConnection().setFakeFragments(true);
+ __serverWebSocket.getConnection().setAllowFrameFragmentation(true);
output.write(0x81);
output.write(0x80|0x7E);
diff --git a/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketMessageD13Test.java b/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketMessageD13Test.java
index 34d728c44a..059fbfc6fc 100644
--- a/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketMessageD13Test.java
+++ b/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/WebSocketMessageD13Test.java
@@ -663,7 +663,7 @@ public class WebSocketMessageD13Test
assertNotNull(__serverWebSocket.connection);
__serverWebSocket.getConnection().setMaxTextMessageSize(10*1024);
- __serverWebSocket.getConnection().setFakeFragments(true);
+ __serverWebSocket.getConnection().setAllowFrameFragmentation(true);
output.write(0x81);
output.write(0x80|0x7E);

Back to the top