blob: 639579b2bc49e4b3c0c9ec22c8392a013deab9cd [file] [log] [blame]
//
// ========================================================================
// Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Apache License v2.0 which accompanies this distribution.
//
// The Eclipse Public License is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// The Apache License v2.0 is available at
// http://www.opensource.org/licenses/apache2.0.php
//
// You may elect to redistribute this code under either of these licenses.
// ========================================================================
//
package org.eclipse.jetty.websocket.common.frames;
import org.eclipse.jetty.websocket.api.extensions.Frame;
import org.eclipse.jetty.websocket.common.OpCode;
import org.eclipse.jetty.websocket.common.WebSocketFrame;
/**
* A Data Frame
*/
public class DataFrame extends WebSocketFrame
{
protected DataFrame(byte opcode)
{
super(opcode);
}
/**
* Construct new DataFrame based on headers of provided frame.
* <p>
* Useful for when working in extensions and a new frame needs to be created.
* @param basedOn the frame this one is based on
*/
public DataFrame(Frame basedOn)
{
this(basedOn,false);
}
/**
* Construct new DataFrame based on headers of provided frame, overriding for continuations if needed.
* <p>
* Useful for when working in extensions and a new frame needs to be created.
* @param basedOn the frame this one is based on
* @param continuation true if this is a continuation frame
*/
public DataFrame(Frame basedOn, boolean continuation)
{
super(basedOn.getOpCode());
copyHeaders(basedOn);
if (continuation)
{
setOpCode(OpCode.CONTINUATION);
}
}
@Override
public void assertValid()
{
/* no extra validation for data frames (yet) here */
}
@Override
public boolean isControlFrame()
{
return false;
}
@Override
public boolean isDataFrame()
{
return true;
}
/**
* Set the data frame to continuation mode
*/
public void setIsContinuation()
{
setOpCode(OpCode.CONTINUATION);
}
}