Top Description Inners Fields Constructors Methods
io.undertow.server.protocol.framed

public abstract Class AbstractFramedStreamSourceChannel<C extends AbstractFramedChannel<C, R, S>, R extends AbstractFramedStreamSourceChannel<C, R, S>, S extends AbstractFramedStreamSinkChannel<C, R, S>>

extends Object
implements StreamSourceChannel
Class Inheritance
All Implemented Interfaces
org.xnio.channels.StreamSourceChannel, org.xnio.channels.SuspendableReadChannel, org.xnio.channels.CloseableChannel, org.xnio.channels.Configurable, java.nio.channels.InterruptibleChannel, java.nio.channels.Channel, java.io.Closeable, java.lang.AutoCloseable, java.nio.channels.ScatteringByteChannel, java.nio.channels.ReadableByteChannel
Known Direct Subclasses
io.undertow.websockets.core.StreamSourceFrameChannel, io.undertow.protocols.ajp.AbstractAjpClientStreamSourceChannel, io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel
Static Imports
org.xnio.Bits.allAreClear, .Bits.allAreSet, .Bits.anyAreSet

Source channel, used to receive framed messages.
Authors
Stuart Douglas, Flavia Rainone

Nested and Inner Type Summary

Modifier and TypeClass and Description
private class

Field Summary

Modifier and TypeField and Description
private ChannelListener<T extends Channel>[]
private final ChannelListener.SimpleSetter<? extends R>
private int
private long
private volatile PooledByteBuffer
data

The backing data for the current frame.

private long
frameDataRemaining

The amount of data left in the frame.

private final C
private final Object
private long
private final Deque<AbstractFramedStreamSourceChannel<C, R, S>.FrameData>
private int
private final ChannelListener.SimpleSetter<? extends R>
private int
private static final int
private static final int
private static final int
private static final int
private static final int
private static final int
private static final int
private static final int
private static final int
private int
private volatile boolean

Constructor Summary

AccessConstructor and Description
public
public
AbstractFramedStreamSourceChannel(C framedChannel, PooledByteBuffer data, long frameDataRemaining)

Method Summary

Modifier and TypeMethod and Description
public void
addCloseTask(ChannelListener<R> channelListener)

public void
awaitReadable()

Implements org.xnio.channels.SuspendableReadChannel.awaitReadable.

Block until this channel becomes readable again.

public void
awaitReadable(long
the time to wait
l
,
TimeUnit
the time unit
timeUnit
)

Implements org.xnio.channels.SuspendableReadChannel.awaitReadable.

Block until this channel becomes readable again, or until the timeout expires.

private void
protected void
public void
protected void
complete()

Method that is invoked when all data has been read.

protected void
dataReady(FrameHeaderData
The frame header data. This may be null if the data is part of a an existing frame
headerData
,
PooledByteBuffer
The frame data
frameData
)

Called when data has been read from the underlying channel.

private void
private void
public ChannelListener.Setter<? extends R>
getCloseSetter()

Implements org.xnio.channels.StreamSourceChannel.getCloseSetter.

Get the setter which can be used to change the close listener for this channel.

protected C
public XnioIoThread
getIoThread()

Implements org.xnio.channels.CloseableChannel.getIoThread.

Get the I/O thread associated with this channel.

public long
public <T> T
getOption(Option<T>
the option to get
tOption
)

Implements org.xnio.channels.Configurable.getOption.

Get the value of a channel option.

protected int
private ChannelListener<? super R>
public ChannelListener.Setter<? extends R>
getReadSetter()

Implements org.xnio.channels.StreamSourceChannel.getReadSetter.

Get the setter which can be used to change the read listener for this channel.

public XnioExecutor
getReadThread()

Implements org.xnio.channels.SuspendableReadChannel.getReadThread.

Get the read thread for this channel.

public XnioWorker
getWorker()

Implements org.xnio.channels.CloseableChannel.getWorker.

Get the worker for this channel.

protected void
private void
protected boolean
protected boolean
public boolean
isOpen()

Implements java.nio.channels.Channel.isOpen.

Tells whether or not this channel is open.

public boolean
isReadResumed()

Implements org.xnio.channels.SuspendableReadChannel.isReadResumed.

Determine whether reads are resumed.

protected void
protected void
markStreamBroken()

Called when this stream is no longer valid.

protected PooledByteBuffer
processFrameData(PooledByteBuffer data, boolean lastFragmentOfFrame)

public long
read(ByteBuffer[]
The buffers into which bytes are to be transferred
dsts
,
int
The offset within the buffer array of the first buffer into which bytes are to be transferred; must be non-negative and no larger than dsts.length
offset
,
int
The maximum number of buffers to be accessed; must be non-negative and no larger than dsts.length - offset
length
)

Implements java.nio.channels.ScatteringByteChannel.read.

Reads a sequence of bytes from this channel into a subsequence of the given buffers.

public long
read(ByteBuffer[]
The buffers into which bytes are to be transferred
dsts
)

Implements java.nio.channels.ScatteringByteChannel.read.

Reads a sequence of bytes from this channel into the given buffers.

public int
read(ByteBuffer
The buffer into which bytes are to be transferred
dst
)

Implements java.nio.channels.ReadableByteChannel.read.

Reads a sequence of bytes from this channel into the given buffer.

public void
resumeReads()

Implements org.xnio.channels.SuspendableReadChannel.resumeReads.

Resume reads on this channel.

pack-priv void
resumeReadsInternal(boolean wakeup)

For this class there is no difference between a resume and a wakeup

public void
setMaxStreamSize(long maxStreamSize)

public <T> T
setOption(Option<T>
the option to set
tOption
,
T
the value of the option to set
t
)

Implements org.xnio.channels.Configurable.setOption.

Set an option for this channel.

public void
shutdownReads()

Implements org.xnio.channels.SuspendableReadChannel.shutdownReads.

Places this readable channel at "end of stream".

public boolean
supportsOption(Option<?>
the option
option
)

Implements org.xnio.channels.Configurable.supportsOption.

Determine whether an option is supported on this channel.

public void
suspendReads()

Implements org.xnio.channels.SuspendableReadChannel.suspendReads.

Suspend further read notifications on this channel.

public long
transferTo(long
the position within the file from which the transfer is to begin
position
,
long
the number of bytes to be transferred
count
,
FileChannel
the file to write to
target
)

Implements org.xnio.channels.StreamSourceChannel.transferTo.

Transfers bytes into the given file from this channel.

public long
transferTo(long
the number of bytes to be transferred
count
,
ByteBuffer
the buffer to copy through.
throughBuffer
,
StreamSinkChannel
the destination to write to
streamSinkChannel
)

Implements org.xnio.channels.StreamSourceChannel.transferTo.

Transfers bytes into the given channel target.

protected long
updateFrameDataRemaining(PooledByteBuffer frameData, long frameDataRemaining)

public void
wakeupReads()

Implements org.xnio.channels.SuspendableReadChannel.wakeupReads.

Resume reads on this channel, and force the read listener to be triggered even if the channel isn't actually readable.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

closeListenersback to summary
private ChannelListener<T extends Channel>[] closeListeners
closeSetterback to summary
private final ChannelListener.SimpleSetter<? extends R> closeSetter
currentDataOriginalSizeback to summary
private int currentDataOriginalSize
currentStreamSizeback to summary
private long currentStreamSize
databack to summary
private volatile PooledByteBuffer data

The backing data for the current frame.

frameDataRemainingback to summary
private long frameDataRemaining

The amount of data left in the frame. If this is larger than the data in the backing buffer then

framedChannelback to summary
private final C framedChannel
lockback to summary
private final Object lock
maxStreamSizeback to summary
private long maxStreamSize
pendingFrameDataback to summary
private final Deque<AbstractFramedStreamSourceChannel<C, R, S>.FrameData> pendingFrameData
readFrameCountback to summary
private int readFrameCount
readSetterback to summary
private final ChannelListener.SimpleSetter<? extends R> readSetter
stateback to summary
private int state
STATE_CLOSEDback to summary
private static final int STATE_CLOSED
STATE_DONEback to summary
private static final int STATE_DONE
STATE_IN_LISTENER_LOOPback to summary
private static final int STATE_IN_LISTENER_LOOP
STATE_LAST_FRAMEback to summary
private static final int STATE_LAST_FRAME
STATE_READS_AWAKENback to summary
private static final int STATE_READS_AWAKEN
STATE_READS_RESUMEDback to summary
private static final int STATE_READS_RESUMED
STATE_RETURNED_MINUS_ONEback to summary
private static final int STATE_RETURNED_MINUS_ONE
STATE_STREAM_BROKENback to summary
private static final int STATE_STREAM_BROKEN
STATE_WAITNG_MINUS_ONEback to summary
private static final int STATE_WAITNG_MINUS_ONE
waitersback to summary
private int waiters
waitingForFrameback to summary
private volatile boolean waitingForFrame

Constructor Detail

AbstractFramedStreamSourceChannelback to summary
public AbstractFramedStreamSourceChannel(C framedChannel)
AbstractFramedStreamSourceChannelback to summary
public AbstractFramedStreamSourceChannel(C framedChannel, PooledByteBuffer data, long frameDataRemaining)

Method Detail

addCloseTaskback to summary
public void addCloseTask(ChannelListener<R> channelListener)
awaitReadableback to summary
public void awaitReadable() throws IOException

Implements org.xnio.channels.SuspendableReadChannel.awaitReadable.

Doc from org.xnio.channels.SuspendableReadChannel.awaitReadable.

Block until this channel becomes readable again. This method may return spuriously before the channel becomes readable.

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs
awaitReadableback to summary
public void awaitReadable(long l, TimeUnit timeUnit) throws IOException

Implements org.xnio.channels.SuspendableReadChannel.awaitReadable.

Doc from org.xnio.channels.SuspendableReadChannel.awaitReadable.

Block until this channel becomes readable again, or until the timeout expires. This method may return spuriously before the channel becomes readable or the timeout expires.

Parameters
l:long

the time to wait

timeUnit:TimeUnit

the time unit

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs
beforeReadback to summary
private void beforeRead() throws IOException
channelForciblyClosedback to summary
protected void channelForciblyClosed()
closeback to summary
public void close()

Implements java.nio.channels.Channel.close, org.xnio.channels.CloseableChannel.close.

Doc from java.nio.channels.Channel.close.

Closes this channel.

After a channel is closed, any further attempt to invoke I/O operations upon it will cause a ClosedChannelException to be thrown.

If this channel is already closed then invoking this method has no effect.

This method may be invoked at any time. If some other thread has already invoked it, however, then another invocation will block until the first invocation is complete, after which it will return without effect.

Annotations
@Override
completeback to summary
protected void complete() throws IOException

Method that is invoked when all data has been read.

dataReadyback to summary
protected void dataReady(FrameHeaderData headerData, PooledByteBuffer frameData)

Called when data has been read from the underlying channel.

Parameters
headerData:FrameHeaderData

The frame header data. This may be null if the data is part of a an existing frame

frameData:PooledByteBuffer

The frame data

decrementFrameDataRemainingback to summary
private void decrementFrameDataRemaining()
exitReadback to summary
private void exitRead() throws IOException
getCloseSetterback to summary
public ChannelListener.Setter<? extends R> getCloseSetter()

Implements org.xnio.channels.StreamSourceChannel.getCloseSetter.

Doc from org.xnio.channels.StreamSourceChannel.getCloseSetter.

Get the setter which can be used to change the close listener for this channel. If the channel is already closed, then the listener will not be called.

Returns:ChannelListener.Setter<? extends R>

Doc from org.xnio.channels.CloseableChannel.getCloseSetter.

the setter

Annotations
@Override
getFramedChannelback to summary
protected C getFramedChannel()
getIoThreadback to summary
public XnioIoThread getIoThread()

Implements org.xnio.channels.CloseableChannel.getIoThread.

Doc from org.xnio.channels.CloseableChannel.getIoThread.

Get the I/O thread associated with this channel.

Returns:XnioIoThread

the I/O thread associated with this channel

Annotations
@Override
getMaxStreamSizeback to summary
public long getMaxStreamSize()
getOptionback to summary
public <T> T getOption(Option<T> tOption) throws IOException

Implements org.xnio.channels.Configurable.getOption.

Doc from org.xnio.channels.Configurable.getOption.

Get the value of a channel option.

Parameters
<T>
the type of the option value
tOption:Option<T>

the option to get

Returns:T

the value of the option, or null if it is not set

Annotations
@Override
Exceptions
IOException:
if an I/O error occurred when reading the option
getReadFrameCountback to summary
protected int getReadFrameCount()
getReadListenerback to summary
private ChannelListener<? super R> getReadListener()
getReadSetterback to summary
public ChannelListener.Setter<? extends R> getReadSetter()

Implements org.xnio.channels.StreamSourceChannel.getReadSetter.

Doc from org.xnio.channels.StreamSourceChannel.getReadSetter.

Get the setter which can be used to change the read listener for this channel.

Returns:ChannelListener.Setter<? extends R>

Doc from org.xnio.channels.SuspendableReadChannel.getReadSetter.

the setter

Annotations
@Override
getReadThreadback to summary
public XnioExecutor getReadThread()

Implements org.xnio.channels.SuspendableReadChannel.getReadThread.

Doc from org.xnio.channels.SuspendableReadChannel.getReadThread.

Get the read thread for this channel.

Returns:XnioExecutor

the thread, or null if none is configured or available

Annotations
@Override
getWorkerback to summary
public XnioWorker getWorker()

Implements org.xnio.channels.CloseableChannel.getWorker.

Doc from org.xnio.channels.CloseableChannel.getWorker.

Get the worker for this channel.

Returns:XnioWorker

the worker

Annotations
@Override
handleHeaderDataback to summary
protected void handleHeaderData(FrameHeaderData headerData)
handleStreamTooLargeback to summary
private void handleStreamTooLarge()
isCompleteback to summary
protected boolean isComplete()
isLastFrameback to summary
protected boolean isLastFrame()
isOpenback to summary
public boolean isOpen()

Implements java.nio.channels.Channel.isOpen.

Doc from java.nio.channels.Channel.isOpen.

Tells whether or not this channel is open.

Returns:boolean

true if, and only if, this channel is open

Annotations
@Override
isReadResumedback to summary
public boolean isReadResumed()

Implements org.xnio.channels.SuspendableReadChannel.isReadResumed.

Doc from org.xnio.channels.SuspendableReadChannel.isReadResumed.

Determine whether reads are resumed.

Returns:boolean

true if reads are resumed, false if reads are suspended

Annotations
@Override
lastFrameback to summary
protected void lastFrame()
markStreamBrokenback to summary
protected void markStreamBroken()

Called when this stream is no longer valid. Reads from the stream will result in an exception.

processFrameDataback to summary
protected PooledByteBuffer processFrameData(PooledByteBuffer data, boolean lastFragmentOfFrame) throws IOException
readback to summary
public long read(ByteBuffer[] dsts, int offset, int length) throws IOException

Implements java.nio.channels.ScatteringByteChannel.read.

Doc from java.nio.channels.ScatteringByteChannel.read.

Reads a sequence of bytes from this channel into a subsequence of the given buffers.

An invocation of this method attempts to read up to r bytes from this channel, where r is the total number of bytes remaining in the specified subsequence of the given buffer array, that is,

dsts[offset].remaining() + dsts[offset+1].remaining() + ... + dsts[offset+length-1].remaining()
dsts[offset].remaining()
    + dsts[offset+1].remaining()
    + ... + dsts[offset+length-1].remaining()
at the moment that this method is invoked.

Suppose that a byte sequence of length n is read, where 0 <= n <= r. Up to the first dsts[offset].remaining() bytes of this sequence are transferred into buffer dsts[offset], up to the next dsts[offset+1].remaining() bytes are transferred into buffer dsts[offset+1], and so forth, until the entire byte sequence is transferred into the given buffers. As many bytes as possible are transferred into each buffer, hence the final position of each updated buffer, except the last updated buffer, is guaranteed to be equal to that buffer's limit.

This method may be invoked at any time. If another thread has already initiated a read operation upon this channel, however, then an invocation of this method will block until the first operation is complete.

Parameters
dsts:ByteBuffer[]

The buffers into which bytes are to be transferred

offset:int

The offset within the buffer array of the first buffer into which bytes are to be transferred; must be non-negative and no larger than dsts.length

length:int

The maximum number of buffers to be accessed; must be non-negative and no larger than dsts.length - offset

Returns:long

The number of bytes read, possibly zero, or -1 if the channel has reached end-of-stream

Annotations
@Override
Exceptions
IOException:
If some other I/O error occurs
readback to summary
public long read(ByteBuffer[] dsts) throws IOException

Implements java.nio.channels.ScatteringByteChannel.read.

Doc from java.nio.channels.ScatteringByteChannel.read.

Reads a sequence of bytes from this channel into the given buffers.

An invocation of this method of the form c.read(dsts) behaves in exactly the same manner as the invocation

c.read(dsts, 0, dsts.length);
c.read(dsts, 0, dsts.length);
Parameters
dsts:ByteBuffer[]

The buffers into which bytes are to be transferred

Returns:long

The number of bytes read, possibly zero, or -1 if the channel has reached end-of-stream

Annotations
@Override
Exceptions
IOException:
If some other I/O error occurs
readback to summary
public int read(ByteBuffer dst) throws IOException

Implements java.nio.channels.ReadableByteChannel.read.

Doc from java.nio.channels.ReadableByteChannel.read.

Reads a sequence of bytes from this channel into the given buffer.

An attempt is made to read up to r bytes from the channel, where r is the number of bytes remaining in the buffer, that is, dst.remaining(), at the moment this method is invoked.

Suppose that a byte sequence of length n is read, where 0 <= n <= r. This byte sequence will be transferred into the buffer so that the first byte in the sequence is at index p and the last byte is at index p + n - 1, where p is the buffer's position at the moment this method is invoked. Upon return the buffer's position will be equal to p + n; its limit will not have changed.

A read operation might not fill the buffer, and in fact it might not read any bytes at all. Whether or not it does so depends upon the nature and state of the channel. A socket channel in non-blocking mode, for example, cannot read any more bytes than are immediately available from the socket's input buffer; similarly, a file channel cannot read any more bytes than remain in the file. It is guaranteed, however, that if a channel is in blocking mode and there is at least one byte remaining in the buffer then this method will block until at least one byte is read.

This method may be invoked at any time. If another thread has already initiated a read operation upon this channel, however, then an invocation of this method will block until the first operation is complete.

Parameters
dst:ByteBuffer

The buffer into which bytes are to be transferred

Returns:int

The number of bytes read, possibly zero, or -1 if the channel has reached end-of-stream

Annotations
@Override
Exceptions
IOException:
If some other I/O error occurs
resumeReadsback to summary
public void resumeReads()

Implements org.xnio.channels.SuspendableReadChannel.resumeReads.

Doc from org.xnio.channels.SuspendableReadChannel.resumeReads.

Resume reads on this channel. The read listener will be called as soon as there is data available to be read.

Annotations
@Override
resumeReadsInternalback to summary
pack-priv void resumeReadsInternal(boolean wakeup)

For this class there is no difference between a resume and a wakeup

setMaxStreamSizeback to summary
public void setMaxStreamSize(long maxStreamSize)
setOptionback to summary
public <T> T setOption(Option<T> tOption, T t) throws IllegalArgumentException, IOException

Implements org.xnio.channels.Configurable.setOption.

Doc from org.xnio.channels.Configurable.setOption.

Set an option for this channel. Unsupported options are ignored.

Parameters
<T>
the type of the option value
tOption:Option<T>

the option to set

t:T

the value of the option to set

Returns:T

the previous option value, if any

Annotations
@Override
Exceptions
IllegalArgumentException:
if the value is not acceptable for this option
IOException:
if an I/O error occurred when modifying the option
shutdownReadsback to summary
public void shutdownReads() throws IOException

Implements org.xnio.channels.SuspendableReadChannel.shutdownReads.

Doc from org.xnio.channels.SuspendableReadChannel.shutdownReads.

Places this readable channel at "end of stream". Further reads will result in EOF. Shutting down all directions of a channel will cause close() to be called automatically.

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs
supportsOptionback to summary
public boolean supportsOption(Option<?> option)

Implements org.xnio.channels.Configurable.supportsOption.

Doc from org.xnio.channels.Configurable.supportsOption.

Determine whether an option is supported on this channel.

Parameters
option:Option<?>

the option

Returns:boolean

true if it is supported

Annotations
@Override
suspendReadsback to summary
public void suspendReads()

Implements org.xnio.channels.SuspendableReadChannel.suspendReads.

Doc from org.xnio.channels.SuspendableReadChannel.suspendReads.

Suspend further read notifications on this channel.

Annotations
@Override
transferToback to summary
public long transferTo(long position, long count, FileChannel target) throws IOException

Implements org.xnio.channels.StreamSourceChannel.transferTo.

Doc from org.xnio.channels.StreamSourceChannel.transferTo.

Transfers bytes into the given file from this channel. Using this method in preference to FileChannel#transferFrom(ReadableByteChannel, long, long) may provide a performance advantage on some platforms.

If the current thread is interrupted when this method is called, it may throw a java.io.InterruptedIOException; however, if this exception is thrown, the java.io.InterruptedIOException#bytesTransferred field is guaranteed to be 0.

Parameters
position:long

the position within the file from which the transfer is to begin

count:long

the number of bytes to be transferred

target:FileChannel

the file to write to

Returns:long

the number of bytes (possibly 0) that were actually transferred

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs
transferToback to summary
public long transferTo(long count, ByteBuffer throughBuffer, StreamSinkChannel streamSinkChannel) throws IOException

Implements org.xnio.channels.StreamSourceChannel.transferTo.

Doc from org.xnio.channels.StreamSourceChannel.transferTo.

Transfers bytes into the given channel target. On some platforms, this may avoid copying bytes between user and kernel space. On other platforms, bytes are passed through the throughBuffer parameter's buffer space. On entry, throughBuffer will be cleared. On exit, the buffer will be flipped for emptying, and may possibly be empty or may contain data. If this method returns a value less than count, then the remaining data in throughBuffer may contain data read from this channel which must be written to target to complete the operation. Note that using a direct buffer may provide an intermediate performance gain on platforms without zero-copy facilities.

If the current thread is interrupted when this method is called, it may throw a java.io.InterruptedIOException; however, if this exception is thrown, the java.io.InterruptedIOException#bytesTransferred field is guaranteed to be 0. Note that the return value is the amount of data that was actually transferred to the StreamSinkChannel. The actual amount of data read could be larger than this, and can be calculated by adding the return value and the amount of data left in throughBuffer.

Parameters
count:long

the number of bytes to be transferred

throughBuffer:ByteBuffer

the buffer to copy through.

streamSinkChannel:StreamSinkChannel

the destination to write to

Returns:long

the number of bytes (possibly 0) that were actually transferred, or -1 if the end of input was reached

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs
updateFrameDataRemainingback to summary
protected long updateFrameDataRemaining(PooledByteBuffer frameData, long frameDataRemaining)
wakeupReadsback to summary
public void wakeupReads()

Implements org.xnio.channels.SuspendableReadChannel.wakeupReads.

Doc from org.xnio.channels.SuspendableReadChannel.wakeupReads.

Resume reads on this channel, and force the read listener to be triggered even if the channel isn't actually readable.

Annotations
@Override
io.undertow.server.protocol.framed back to summary

private Class AbstractFramedStreamSourceChannel.FrameData

extends Object
Class Inheritance
  • java.lang.Object
  • io.undertow.server.protocol.framed.AbstractFramedStreamSourceChannel.FrameData

Field Summary

Modifier and TypeField and Description
private final PooledByteBuffer
private final FrameHeaderData

Constructor Summary

AccessConstructor and Description
pack-priv
FrameData(FrameHeaderData frameHeaderData, PooledByteBuffer frameData)

Method Summary

Modifier and TypeMethod and Description
pack-priv PooledByteBuffer
pack-priv FrameHeaderData
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

frameDataback to summary
private final PooledByteBuffer frameData
frameHeaderDataback to summary
private final FrameHeaderData frameHeaderData

Constructor Detail

FrameDataback to summary
pack-priv FrameData(FrameHeaderData frameHeaderData, PooledByteBuffer frameData)

Method Detail

getFrameDataback to summary
pack-priv PooledByteBuffer getFrameData()
getFrameHeaderDataback to summary
pack-priv FrameHeaderData getFrameHeaderData()