Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/fragment/FragmentExtension.java')
-rw-r--r--jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/fragment/FragmentExtension.java23
1 files changed, 11 insertions, 12 deletions
diff --git a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/fragment/FragmentExtension.java b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/fragment/FragmentExtension.java
index 13f13a5d70..8bbc63367a 100644
--- a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/fragment/FragmentExtension.java
+++ b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/fragment/FragmentExtension.java
@@ -21,13 +21,12 @@ package org.eclipse.jetty.websocket.common.extensions.fragment;
import java.nio.ByteBuffer;
-import org.eclipse.jetty.websocket.api.WebSocketException;
import org.eclipse.jetty.websocket.api.WriteCallback;
import org.eclipse.jetty.websocket.api.extensions.ExtensionConfig;
import org.eclipse.jetty.websocket.api.extensions.Frame;
import org.eclipse.jetty.websocket.common.OpCode;
-import org.eclipse.jetty.websocket.common.WebSocketFrame;
import org.eclipse.jetty.websocket.common.extensions.AbstractExtension;
+import org.eclipse.jetty.websocket.common.frames.DataFrame;
/**
* Fragment Extension
@@ -35,9 +34,15 @@ import org.eclipse.jetty.websocket.common.extensions.AbstractExtension;
public class FragmentExtension extends AbstractExtension
{
private int maxLength = -1;
+
+ @Override
+ public String getName()
+ {
+ return "fragment";
+ }
@Override
- public void incomingError(WebSocketException e)
+ public void incomingError(Throwable e)
{
// Pass thru
nextIncomingError(e);
@@ -53,7 +58,7 @@ public class FragmentExtension extends AbstractExtension
@Override
public void outgoingFrame(Frame frame, WriteCallback callback)
{
- if (frame.getType().isControl())
+ if (OpCode.isControlFrame(frame.getOpCode()))
{
// Cannot fragment Control Frames
nextOutgoingFrame(frame,callback);
@@ -62,7 +67,6 @@ public class FragmentExtension extends AbstractExtension
int length = frame.getPayloadLength();
- byte opcode = frame.getType().getOpCode(); // original opcode
ByteBuffer payload = frame.getPayload().slice();
int originalLimit = payload.limit();
int currentPosition = payload.position();
@@ -79,10 +83,8 @@ public class FragmentExtension extends AbstractExtension
// break apart payload based on maxLength rules
while (length > maxLength)
{
- WebSocketFrame frag = new WebSocketFrame(frame);
- frag.setOpCode(opcode);
+ DataFrame frag = new DataFrame(frame,continuation);
frag.setFin(false); // always false here
- frag.setContinuation(continuation);
payload.position(currentPosition);
payload.limit(Math.min(payload.position() + maxLength,originalLimit));
frag.setPayload(payload);
@@ -91,16 +93,13 @@ public class FragmentExtension extends AbstractExtension
nextOutgoingFrame(frag,null);
length -= maxLength;
- opcode = OpCode.CONTINUATION;
continuation = true;
currentPosition = payload.limit();
}
// write remaining
- WebSocketFrame frag = new WebSocketFrame(frame);
- frag.setOpCode(opcode);
+ DataFrame frag = new DataFrame(frame,continuation);
frag.setFin(frame.isFin()); // use original fin
- frag.setContinuation(continuation);
payload.position(currentPosition);
payload.limit(originalLimit);
frag.setPayload(payload);

Back to the top