Class AbstractExtension

java.lang.Object
org.eclipse.jetty.websocket.core.AbstractExtension
All Implemented Interfaces:
Closeable, AutoCloseable, Extension, IncomingFrames, OutgoingFrames
Direct Known Subclasses:
FragmentExtension, FrameCaptureExtension, IdentityExtension, PerMessageDeflateExtension, ValidationExtension

@ManagedObject("Abstract Extension") public class AbstractExtension extends Object implements Extension
  • Constructor Details

    • AbstractExtension

      public AbstractExtension()
  • Method Details

    • init

      public void init(ExtensionConfig config, WebSocketComponents components)
      Specified by:
      init in interface Extension
    • onFrame

      public void onFrame(Frame frame, Callback callback)
      Description copied from interface: IncomingFrames

      Process the incoming frame.

      Note: if you need to hang onto any information from the frame, be sure to copy it, as the information contained in the Frame will be released and/or reused by the implementation.

      Failure of the callback will propagate the failure back to the CoreSession to fail the connection and attempt to send a close Frame if one has not been sent.

      Specified by:
      onFrame in interface IncomingFrames
      Parameters:
      frame - the frame to process.
      callback - the read completion.
    • sendFrame

      public void sendFrame(Frame frame, Callback callback, boolean batch)
      Description copied from interface: OutgoingFrames
      A frame, and optional callback, intended for the network layer.

      Note: the frame can undergo many transformations in the various layers and extensions present in the implementation.

      If you are implementing a mutation, you are obliged to handle the incoming WriteCallback appropriately.

      Specified by:
      sendFrame in interface OutgoingFrames
      Parameters:
      frame - the frame to eventually write to the network layer.
      callback - the callback to notify when the frame is written.
      batch - the batch mode requested by the sender.
    • getBufferPool

      public ByteBufferPool getBufferPool()
    • getConfig

      public ExtensionConfig getConfig()
      Description copied from interface: Extension
      The active configuration for this extension.
      Specified by:
      getConfig in interface Extension
      Returns:
      the configuration for this extension. never null.
    • getDeflaterPool

      public DeflaterPool getDeflaterPool()
    • getInflaterPool

      public InflaterPool getInflaterPool()
    • getName

      public String getName()
      Description copied from interface: Extension
      The Sec-WebSocket-Extensions name for this extension.

      Also known as the extension-token per Section 9.1. Negotiating Extensions.

      Specified by:
      getName in interface Extension
      Returns:
      the name of the extension
    • getNextIncoming

      @ManagedAttribute(name="Next Incoming Frame Handler", readonly=true) public IncomingFrames getNextIncoming()
    • getNextOutgoing

      @ManagedAttribute(name="Next Outgoing Frame Handler", readonly=true) public OutgoingFrames getNextOutgoing()
    • isRsv1User

      public boolean isRsv1User()
      Used to indicate that the extension makes use of the RSV1 bit of the base websocket framing.

      This is used to adjust validation during parsing, as well as a checkpoint against 2 or more extensions all simultaneously claiming ownership of RSV1.

      Specified by:
      isRsv1User in interface Extension
      Returns:
      true if extension uses RSV1 for its own purposes.
    • isRsv2User

      public boolean isRsv2User()
      Used to indicate that the extension makes use of the RSV2 bit of the base websocket framing.

      This is used to adjust validation during parsing, as well as a checkpoint against 2 or more extensions all simultaneously claiming ownership of RSV2.

      Specified by:
      isRsv2User in interface Extension
      Returns:
      true if extension uses RSV2 for its own purposes.
    • isRsv3User

      public boolean isRsv3User()
      Used to indicate that the extension makes use of the RSV3 bit of the base websocket framing.

      This is used to adjust validation during parsing, as well as a checkpoint against 2 or more extensions all simultaneously claiming ownership of RSV3.

      Specified by:
      isRsv3User in interface Extension
      Returns:
      true if extension uses RSV3 for its own purposes.
    • nextIncomingFrame

      protected void nextIncomingFrame(Frame frame, Callback callback)
    • nextOutgoingFrame

      protected void nextOutgoingFrame(Frame frame, Callback callback, boolean batch)
    • setNextIncomingFrames

      public void setNextIncomingFrames(IncomingFrames nextIncoming)
      Description copied from interface: Extension
      Set the next IncomingFrames to call in the chain.
      Specified by:
      setNextIncomingFrames in interface Extension
      Parameters:
      nextIncoming - the next incoming extension
    • setNextOutgoingFrames

      public void setNextOutgoingFrames(OutgoingFrames nextOutgoing)
      Description copied from interface: Extension
      Set the next OutgoingFrames to call in the chain.
      Specified by:
      setNextOutgoingFrames in interface Extension
      Parameters:
      nextOutgoing - the next outgoing extension
    • setCoreSession

      public void setCoreSession(CoreSession coreSession)
      Specified by:
      setCoreSession in interface Extension
      Parameters:
      coreSession - the CoreSession for this Extension.
    • getCoreSession

      public CoreSession getCoreSession()
    • getConfiguration

      protected Configuration getConfiguration()
    • toString

      public String toString()
      Overrides:
      toString in class Object