Class WebSocketFrame

  • All Implemented Interfaces:
    org.eclipse.jetty.websocket.api.extensions.Frame
    Direct Known Subclasses:
    ControlFrame, DataFrame

    public abstract class WebSocketFrame
    extends Object
    implements org.eclipse.jetty.websocket.api.extensions.Frame
    A Base Frame as seen in RFC 6455. Sec 5.2
        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-------+-+-------------+-------------------------------+
       |F|R|R|R| opcode|M| Payload len |    Extended payload length    |
       |I|S|S|S|  (4)  |A|     (7)     |             (16/64)           |
       |N|V|V|V|       |S|             |   (if payload len==126/127)   |
       | |1|2|3|       |K|             |                               |
       +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +
       |     Extended payload length continued, if payload len == 127  |
       + - - - - - - - - - - - - - - - +-------------------------------+
       |                               |Masking-key, if MASK set to 1  |
       +-------------------------------+-------------------------------+
       | Masking-key (continued)       |          Payload Data         |
       +-------------------------------- - - - - - - - - - - - - - - - +
       :                     Payload Data continued ...                :
       + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
       |                     Payload Data continued ...                |
       +---------------------------------------------------------------+
     
    • Field Detail

      • finRsvOp

        protected byte finRsvOp
        Combined FIN + RSV1 + RSV2 + RSV3 + OpCode byte.
           1000_0000 (0x80) = fin
           0100_0000 (0x40) = rsv1
           0010_0000 (0x20) = rsv2
           0001_0000 (0x10) = rsv3
           0000_1111 (0x0F) = opcode
         
      • masked

        protected boolean masked
      • mask

        protected byte[] mask
      • data

        protected ByteBuffer data
        The payload data.

        It is assumed to always be in FLUSH mode (ready to read) in this object.

    • Constructor Detail

      • WebSocketFrame

        protected WebSocketFrame​(byte opcode)
        Construct form opcode
        Parameters:
        opcode - the opcode the frame is based on
    • Method Detail

      • copy

        public static WebSocketFrame copy​(org.eclipse.jetty.websocket.api.extensions.Frame original)
      • assertValid

        public abstract void assertValid()
      • copyHeaders

        protected void copyHeaders​(org.eclipse.jetty.websocket.api.extensions.Frame frame)
      • getMask

        public byte[] getMask()
        Specified by:
        getMask in interface org.eclipse.jetty.websocket.api.extensions.Frame
      • getOpCode

        public final byte getOpCode()
        Specified by:
        getOpCode in interface org.eclipse.jetty.websocket.api.extensions.Frame
      • getPayload

        public ByteBuffer getPayload()
        Get the payload ByteBuffer. possible null.
        Specified by:
        getPayload in interface org.eclipse.jetty.websocket.api.extensions.Frame
      • getPayloadAsUTF8

        public String getPayloadAsUTF8()
      • getPayloadLength

        public int getPayloadLength()
        Specified by:
        getPayloadLength in interface org.eclipse.jetty.websocket.api.extensions.Frame
      • getType

        public org.eclipse.jetty.websocket.api.extensions.Frame.Type getType()
        Specified by:
        getType in interface org.eclipse.jetty.websocket.api.extensions.Frame
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • hasPayload

        public boolean hasPayload()
        Specified by:
        hasPayload in interface org.eclipse.jetty.websocket.api.extensions.Frame
      • isControlFrame

        public abstract boolean isControlFrame()
      • isDataFrame

        public abstract boolean isDataFrame()
      • isFin

        public boolean isFin()
        Specified by:
        isFin in interface org.eclipse.jetty.websocket.api.extensions.Frame
      • isLast

        public boolean isLast()
        Specified by:
        isLast in interface org.eclipse.jetty.websocket.api.extensions.Frame
      • isMasked

        public boolean isMasked()
        Specified by:
        isMasked in interface org.eclipse.jetty.websocket.api.extensions.Frame
      • isRsv1

        public boolean isRsv1()
        Specified by:
        isRsv1 in interface org.eclipse.jetty.websocket.api.extensions.Frame
      • isRsv2

        public boolean isRsv2()
        Specified by:
        isRsv2 in interface org.eclipse.jetty.websocket.api.extensions.Frame
      • isRsv3

        public boolean isRsv3()
        Specified by:
        isRsv3 in interface org.eclipse.jetty.websocket.api.extensions.Frame
      • reset

        public void reset()
      • setMask

        public org.eclipse.jetty.websocket.api.extensions.Frame setMask​(byte[] maskingKey)
      • setMasked

        public org.eclipse.jetty.websocket.api.extensions.Frame setMasked​(boolean mask)
      • setPayload

        public WebSocketFrame setPayload​(ByteBuffer buf)
        Set the data payload.

        The provided buffer will be used as is, no copying of bytes performed.

        The provided buffer should be flipped and ready to READ from.

        Parameters:
        buf - the bytebuffer to set
        Returns:
        the frame itself