Class Generator

java.lang.Object
org.eclipse.jetty.websocket.common.Generator

public class Generator extends Object
Generating a frame in WebSocket land.
    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 Details

    • MAX_HEADER_LENGTH

      public static final int MAX_HEADER_LENGTH
      The overhead (maximum) for a framing header. Assuming a maximum sized payload with masking key.
      See Also:
    • behavior

      private final WebSocketBehavior behavior
    • bufferPool

      private final org.eclipse.jetty.io.ByteBufferPool bufferPool
    • validating

      private final boolean validating
    • readOnly

      private final boolean readOnly
    • flagsInUse

      private byte flagsInUse
      Are any flags in use

         0100_0000 (0x40) = rsv1
         0010_0000 (0x20) = rsv2
         0001_0000 (0x10) = rsv3
       
  • Constructor Details

    • Generator

      public Generator(WebSocketPolicy policy, org.eclipse.jetty.io.ByteBufferPool bufferPool)
      Construct Generator with provided policy and bufferPool
      Parameters:
      policy - the policy to use
      bufferPool - the buffer pool to use
    • Generator

      public Generator(WebSocketPolicy policy, org.eclipse.jetty.io.ByteBufferPool bufferPool, boolean validating)
      Construct Generator with provided policy and bufferPool
      Parameters:
      policy - the policy to use
      bufferPool - the buffer pool to use
      validating - true to enable RFC frame validation
    • Generator

      public Generator(WebSocketPolicy policy, org.eclipse.jetty.io.ByteBufferPool bufferPool, boolean validating, boolean readOnly)
      Construct Generator with provided policy and bufferPool
      Parameters:
      policy - the policy to use
      bufferPool - the buffer pool to use
      validating - true to enable RFC frame validation
      readOnly - true if generator is to treat frames as read-only and not modify them. Useful for debugging purposes, but not generally for runtime use.
  • Method Details

    • assertFrameValid

      public void assertFrameValid(Frame frame)
    • configureFromExtensions

      public void configureFromExtensions(List<? extends Extension> exts)
    • generateHeaderBytes

      public ByteBuffer generateHeaderBytes(Frame frame)
    • generateHeaderBytes

      public void generateHeaderBytes(Frame frame, ByteBuffer buffer)
    • generateWholeFrame

      public void generateWholeFrame(Frame frame, ByteBuffer buf)
      Generate the whole frame (header + payload copy) into a single ByteBuffer.

      Note: This is slow, moves lots of memory around. Only use this if you must (such as in unit testing).

      Parameters:
      frame - the frame to generate
      buf - the buffer to output the generated frame to
    • getBufferPool

      public org.eclipse.jetty.io.ByteBufferPool getBufferPool()
    • setRsv1InUse

      public void setRsv1InUse(boolean rsv1InUse)
    • setRsv2InUse

      public void setRsv2InUse(boolean rsv2InUse)
    • setRsv3InUse

      public void setRsv3InUse(boolean rsv3InUse)
    • isRsv1InUse

      public boolean isRsv1InUse()
    • isRsv2InUse

      public boolean isRsv2InUse()
    • isRsv3InUse

      public boolean isRsv3InUse()
    • toString

      public String toString()
      Overrides:
      toString in class Object