@ManagedObject(value="Extension Stack") public class ExtensionStack extends ContainerLifeCycle implements IncomingFrames, OutgoingFrames
Modifier and Type | Class and Description |
---|---|
private class |
ExtensionStack.Flusher |
private static class |
ExtensionStack.FrameEntry |
AbstractLifeCycle.AbstractLifeCycleListener
Container.InheritedListener, Container.Listener
LifeCycle.Listener
Modifier and Type | Field and Description |
---|---|
private java.util.Queue<ExtensionStack.FrameEntry> |
entries |
private java.util.List<Extension> |
extensions |
private ExtensionFactory |
factory |
private IteratingCallback |
flusher |
private static Logger |
LOG |
private IncomingFrames |
nextIncoming |
private OutgoingFrames |
nextOutgoing |
Constructor and Description |
---|
ExtensionStack(ExtensionFactory factory) |
Modifier and Type | Method and Description |
---|---|
void |
configure(Generator generator) |
void |
configure(Parser parser) |
protected void |
doStart()
Starts the managed lifecycle beans in the order they were added.
|
java.lang.String |
dumpSelf()
The description of this/self found in the dump.
|
java.util.List<Extension> |
getExtensions() |
private IncomingFrames |
getLastIncoming() |
private OutgoingFrames |
getLastOutgoing() |
java.util.List<ExtensionConfig> |
getNegotiatedExtensions()
Get the list of negotiated extensions, each entry being a full "name; params" extension configuration
|
IncomingFrames |
getNextIncoming() |
OutgoingFrames |
getNextOutgoing() |
private int |
getQueueSize() |
boolean |
hasNegotiatedExtensions() |
void |
incomingFrame(Frame frame)
Process the incoming frame.
|
void |
negotiate(java.util.List<ExtensionConfig> configs)
Perform the extension negotiation.
|
private void |
offerEntry(ExtensionStack.FrameEntry entry) |
void |
outgoingFrame(Frame frame,
WriteCallback callback,
BatchMode batchMode)
A frame, and optional callback, intended for the network layer.
|
private ExtensionStack.FrameEntry |
pollEntry() |
void |
setNextIncoming(IncomingFrames nextIncoming) |
void |
setNextOutgoing(OutgoingFrames nextOutgoing) |
void |
setPolicy(WebSocketPolicy policy) |
java.lang.String |
toString() |
addBean, addBean, addBean, addEventListener, addManaged, contains, destroy, doStop, dump, dump, dump, dump, dump, dumpBeans, dumpObject, dumpObjects, dumpStdErr, dumpThis, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, setStopTimeout, start, stop, unmanage, updateBean, updateBean, updateBeans
addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stop
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
dumpObjects
private static final Logger LOG
private final java.util.Queue<ExtensionStack.FrameEntry> entries
private final IteratingCallback flusher
private final ExtensionFactory factory
private java.util.List<Extension> extensions
private IncomingFrames nextIncoming
private OutgoingFrames nextOutgoing
public ExtensionStack(ExtensionFactory factory)
public void configure(Generator generator)
public void configure(Parser parser)
protected void doStart() throws java.lang.Exception
ContainerLifeCycle
doStart
in class ContainerLifeCycle
java.lang.Exception
public java.lang.String dumpSelf()
Dumpable
@ManagedAttribute(name="Extension List", readonly=true) public java.util.List<Extension> getExtensions()
private IncomingFrames getLastIncoming()
private OutgoingFrames getLastOutgoing()
public java.util.List<ExtensionConfig> getNegotiatedExtensions()
@ManagedAttribute(name="Next Incoming Frames Handler", readonly=true) public IncomingFrames getNextIncoming()
@ManagedAttribute(name="Next Outgoing Frames Handler", readonly=true) public OutgoingFrames getNextOutgoing()
public boolean hasNegotiatedExtensions()
public void incomingFrame(Frame frame)
IncomingFrames
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.
incomingFrame
in interface IncomingFrames
frame
- the frame to processpublic void negotiate(java.util.List<ExtensionConfig> configs)
For the list of negotiated extensions, use getNegotiatedExtensions()
configs
- the configurations being requestedpublic void outgoingFrame(Frame frame, WriteCallback callback, BatchMode batchMode)
OutgoingFrames
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.
outgoingFrame
in interface OutgoingFrames
frame
- the frame to eventually write to the network layer.callback
- the callback to notify when the frame is written.batchMode
- the batch mode requested by the sender.public void setNextIncoming(IncomingFrames nextIncoming)
public void setNextOutgoing(OutgoingFrames nextOutgoing)
public void setPolicy(WebSocketPolicy policy)
private void offerEntry(ExtensionStack.FrameEntry entry)
private ExtensionStack.FrameEntry pollEntry()
private int getQueueSize()
public java.lang.String toString()
toString
in class AbstractLifeCycle