Class DataFrame

  • All Implemented Interfaces:
    Frame

    public class DataFrame
    extends java.lang.Object
    implements Frame
    The DataFrame object represents a frame as defined in RFC 6455. A frame is a very lightweight envelope used to send control information and either text or binary user data. Typically a frame will represent a single message however, it is possible to fragment a single frame up in to several frames. A fragmented frame has a specific FrameType indicating that it is a continuation frame.
    See Also:
    Data
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private Data data
      This contains the payload to be sent with the frame.
      private boolean last
      This determines if the frame is the last of a sequence.
      private FrameType type
      This is the type used to determine the intent of the frame.
    • Constructor Summary

      Constructors 
      Constructor Description
      DataFrame​(FrameType type)
      Constructor for the DataFrame object.
      DataFrame​(FrameType type, byte[] data)
      Constructor for the DataFrame object.
      DataFrame​(FrameType type, byte[] data, boolean last)
      Constructor for the DataFrame object.
      DataFrame​(FrameType type, java.lang.String text)
      Constructor for the DataFrame object.
      DataFrame​(FrameType type, java.lang.String text, boolean last)
      Constructor for the DataFrame object.
      DataFrame​(FrameType type, Data data)
      Constructor for the DataFrame object.
      DataFrame​(FrameType type, Data data, boolean last)
      Constructor for the DataFrame object.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      byte[] getBinary()
      This returns the binary payload that is to be sent with the frame.
      Frame getFrame​(FrameType type)
      This method is used to convert from one frame type to another.
      java.lang.String getText()
      This returns the text payload that is to be sent with the frame.
      FrameType getType()
      This is used to determine the type of frame.
      boolean isFinal()
      This is used to determine if the frame is the final frame in a sequence of fragments or a whole frame.
      java.lang.String toString()
      This returns the text payload that is to be sent with the frame.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • type

        private final FrameType type
        This is the type used to determine the intent of the frame.
      • data

        private final Data data
        This contains the payload to be sent with the frame.
      • last

        private final boolean last
        This determines if the frame is the last of a sequence.
    • Constructor Detail

      • DataFrame

        public DataFrame​(FrameType type)
        Constructor for the DataFrame object. This is used to create a frame using the specified data and frame type. A zero payload is created using this constructor and is suitable only for specific control frames such as connection termination.
        Parameters:
        type - this is the frame type used for this instance
      • DataFrame

        public DataFrame​(FrameType type,
                         byte[] data)
        Constructor for the DataFrame object. This is used to create a frame using the specified data and frame type. In some cases a control frame may require a zero length payload.
        Parameters:
        type - this is the frame type used for this instance
        data - this is the payload for this frame
      • DataFrame

        public DataFrame​(FrameType type,
                         byte[] data,
                         boolean last)
        Constructor for the DataFrame object. This is used to create a frame using the specified data and frame type. In some cases a control frame may require a zero length payload.
        Parameters:
        type - this is the frame type used for this instance
        data - this is the payload for this frame
        last - true if this is not a fragment in a sequence
      • DataFrame

        public DataFrame​(FrameType type,
                         java.lang.String text)
        Constructor for the DataFrame object. This is used to create a frame using the specified data and frame type. In some cases a control frame may require a zero length payload.
        Parameters:
        type - this is the frame type used for this instance
        data - this is the payload for this frame
      • DataFrame

        public DataFrame​(FrameType type,
                         java.lang.String text,
                         boolean last)
        Constructor for the DataFrame object. This is used to create a frame using the specified data and frame type. In some cases a control frame may require a zero length payload.
        Parameters:
        type - this is the frame type used for this instance
        data - this is the payload for this frame
        last - true if this is not a fragment in a sequence
      • DataFrame

        public DataFrame​(FrameType type,
                         Data data)
        Constructor for the DataFrame object. This is used to create a frame using the specified data and frame type. In some cases a control frame may require a zero length payload.
        Parameters:
        type - this is the frame type used for this instance
        data - this is the payload for this frame
      • DataFrame

        public DataFrame​(FrameType type,
                         Data data,
                         boolean last)
        Constructor for the DataFrame object. This is used to create a frame using the specified data and frame type. In some cases a control frame may require a zero length payload.
        Parameters:
        type - this is the frame type used for this instance
        data - this is the payload for this frame
        last - true if this is not a fragment in a sequence
    • Method Detail

      • isFinal

        public boolean isFinal()
        This is used to determine if the frame is the final frame in a sequence of fragments or a whole frame. If this returns false then the frame is a continuation from from a sequence of fragments, otherwise it is a whole frame or the last fragment.
        Specified by:
        isFinal in interface Frame
        Returns:
        this returns false if the frame is a fragment
      • getBinary

        public byte[] getBinary()
        This returns the binary payload that is to be sent with the frame. It contains no headers or other meta data. If the original data was text this converts it to UTF-8.
        Specified by:
        getBinary in interface Frame
        Returns:
        the binary payload to be sent with the frame
      • getText

        public java.lang.String getText()
        This returns the text payload that is to be sent with the frame. It contains no header information or meta data. Caution should be used with this method as binary payloads will encode to garbage when decoded as UTF-8.
        Specified by:
        getText in interface Frame
        Returns:
        the text payload to be sent with the frame
      • getFrame

        public Frame getFrame​(FrameType type)
        This method is used to convert from one frame type to another. Converting a frame type is useful in scenarios such as when a ping needs to respond to a pong or when it is more convenient to send a text frame as binary.
        Specified by:
        getFrame in interface Frame
        Parameters:
        type - this is the frame type to convert to
        Returns:
        a new frame using the specified frame type
      • getType

        public FrameType getType()
        This is used to determine the type of frame. Interpretation of this type is outlined in RFC 6455 and can be loosely categorised as control frames and either data or binary frames.
        Specified by:
        getType in interface Frame
        Returns:
        this returns the type of frame that this represents
      • toString

        public java.lang.String toString()
        This returns the text payload that is to be sent with the frame. It contains no header information or meta data. Caution should be used with this method as binary payloads will encode to garbage when decoded as UTF-8.
        Overrides:
        toString in class java.lang.Object
        Returns:
        the text payload to be sent with the frame