Class HTTP2Stream
- All Implemented Interfaces:
 Closeable, AutoCloseable, Stream, CyclicTimeouts.Expirable, Attachable, Callback, Dumpable, Invocable
- 
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classAn ordered list of frames belonging to the same stream.Nested classes/interfaces inherited from interface Callback
Callback.Combination, Callback.Completable, Callback.Completing, Callback.NestedNested classes/interfaces inherited from interface Dumpable
Dumpable.DumpableContainer, Dumpable.DumpAppendableNested classes/interfaces inherited from interface Invocable
Invocable.Callable, Invocable.InvocationType, Invocable.ReadyTask, Invocable.TaskNested classes/interfaces inherited from interface Stream
Stream.Data, Stream.Listener - 
Field Summary
Fields inherited from interface Callback
NOOP, NOT_CALLEDFields inherited from interface Invocable
__nonBlocking - 
Constructor Summary
ConstructorsConstructorDescriptionHTTP2Stream(HTTP2Session session, int streamId, MetaData.Request request, boolean local)  - 
Method Summary
Modifier and TypeMethodDescriptionvoidclose()voidcommit()voidSends the given DATAframe.voiddemand()Demands moreDATAframes for this stream.dump()voiddump(Appendable out, String indent) Dump this object (and children) into an Appendable using the provided indent after any new lines.booleanvoidCallback invoked when the operation fails.getAttribute(String key) longlongReturns the expiration time in nanoseconds.intgetId()Get the stream unique id.longGet theStream.Listenerassociated with this stream.intintGet the session this stream is associated to.inthashCode()voidheaders(HeadersFrame frame, Callback callback) Sends the given HEADERSframe.booleanisClosed()booleanbooleanisLocal()booleanbooleanisOpen()booleanbooleanisReset()booleanvoidnotIdle()voidonClose()protected voidonIdleTimeout(TimeoutException timeout) voidprocess(Stream.Data data) voidvoidprocessData(boolean immediate) voidpush(PushPromiseFrame frame, Promise<Stream> promise, Stream.Listener listener) Sends the given PUSH_PROMISEframe.readData()Reads DATA frames from this stream, wrapping them in retainableStream.Dataobjects.removeAttribute(String key) voidreset(ResetFrame frame, Callback callback) Sends the given RST_STREAMframe.voidsend(HTTP2Stream.FrameList frameList, Callback callback) voidsetAttachment(Object attachment) Attaches the given object for later retrieval.voidsetAttribute(String key, Object value) voidsetIdleTimeout(long idleTimeout) voidsetListener(Stream.Listener listener) voidCallback invoked when the operation completes.toString()booleanupdateClose(boolean update, CloseState.Event event) intupdateRecvWindow(int delta) intupdateSendWindow(int delta) Methods inherited from interface Callback
completeWith 
- 
Constructor Details
- 
HTTP2Stream
 
 - 
 - 
Method Details
- 
getId
 - 
equals
 - 
hashCode
 - 
getAttachment
- Specified by:
 getAttachmentin interfaceAttachable- Returns:
 - the object attached to this instance
 - See Also:
 
 - 
setAttachment
Description copied from interface:AttachableAttaches the given object for later retrieval.- Specified by:
 setAttachmentin interfaceAttachable- Parameters:
 attachment- the object to attach
 - 
isLocal
 - 
getSession
Description copied from interface:StreamGet the session this stream is associated to.- Specified by:
 getSessionin interfaceStream- Returns:
 - the session this stream is associated to
 
 - 
headers
Description copied from interface:StreamSends the given HEADERS
frame.Typically used to send an HTTP response or to send the HTTP response trailers.
 - 
send
 - 
push
Description copied from interface:StreamSends the given PUSH_PROMISE
frame. - 
data
 - 
reset
Description copied from interface:StreamSends the given RST_STREAM
frame. - 
getAttribute
- Specified by:
 getAttributein interfaceStream- Parameters:
 key- the attribute key- Returns:
 - an arbitrary object associated with the given key to this stream or null if no object can be found for the given key.
 - See Also:
 
 - 
setAttribute
- Specified by:
 setAttributein interfaceStream- Parameters:
 key- the attribute keyvalue- an arbitrary object to associate with the given key to this stream- See Also:
 
 - 
removeAttribute
- Specified by:
 removeAttributein interfaceStream- Parameters:
 key- the attribute key- Returns:
 - the arbitrary object associated with the given key to this stream
 - See Also:
 
 - 
isReset
 - 
isResetOrFailed
public boolean isResetOrFailed() - 
isClosed
 - 
isRemotelyClosed
public boolean isRemotelyClosed()- Specified by:
 isRemotelyClosedin interfaceStream- Returns:
 - whether the stream is closed remotely.
 - See Also:
 
 - 
isLocallyClosed
public boolean isLocallyClosed() - 
commit
public void commit() - 
isCommitted
public boolean isCommitted() - 
isOpen
public boolean isOpen() - 
notIdle
public void notIdle() - 
getExpireNanoTime
public long getExpireNanoTime()Description copied from interface:CyclicTimeouts.ExpirableReturns the expiration time in nanoseconds.
The value to return must be calculated taking into account the current nanoTime, for example:
expireNanoTime = NanoTime.now() + timeoutNanosReturning
Long.MAX_VALUEindicates that this entity does not expire.- Specified by:
 getExpireNanoTimein interfaceCyclicTimeouts.Expirable- Returns:
 - the expiration time in nanoseconds, or 
Long.MAX_VALUEif this entity does not expire 
 - 
getIdleTimeout
public long getIdleTimeout()- Specified by:
 getIdleTimeoutin interfaceStream- Returns:
 - the stream idle timeout
 - See Also:
 
 - 
setIdleTimeout
public void setIdleTimeout(long idleTimeout) - Specified by:
 setIdleTimeoutin interfaceStream- Parameters:
 idleTimeout- the stream idle timeout- See Also:
 
 - 
onIdleTimeout
 - 
getListener
Description copied from interface:StreamGet theStream.Listenerassociated with this stream.- Specified by:
 getListenerin interfaceStream- Returns:
 - the 
Stream.Listenerassociated with this stream 
 - 
setListener
 - 
process
 - 
process
 - 
readData
Description copied from interface:StreamReads DATA frames from this stream, wrapping them in retainable
Stream.Dataobjects.The returned
Stream.Dataobject may benull, indicating that the end of the read side of the stream has not yet been reached, which may happen in these cases:- not all the bytes have been received so far, for example the remote peer did not send them yet, or they are in-flight
 - all the bytes have been received, but there is a trailer HEADERS frame to be received to indicate the end of the read side of the stream
 
When the returned
Stream.Dataobject is notnull, the flow control window has been enlarged by the DATA frame length; applications must call, either immediately or later (even asynchronously from a different thread)Retainable.release()to notify the implementation that the bytes have been processed.Stream.Dataobjects may be stored away for later, asynchronous, processing (for example, to process them only when all of them have been received).Once the returned
Stream.Dataobject indicates that the end of the read side of the stream has been reached, further calls to this method will return aStream.Dataobject with the same indication, although the instance may be different.- Specified by:
 readDatain interfaceStream- Returns:
 - a 
Stream.Dataobject containing the DATA frame, or null if no DATA frame is available - See Also:
 
 - 
demand
public void demand()Description copied from interface:StreamDemands more
DATAframes for this stream.Calling this method causes
Stream.Listener.onDataAvailable(Stream, boolean)to be invoked, possibly at a later time, when the stream has data to be read, but also when the stream has reached EOF.This method is idempotent: calling it when there already is an outstanding demand to invoke
Stream.Listener.onDataAvailable(Stream, boolean)is a no-operation.The thread invoking this method may invoke directly
Stream.Listener.onDataAvailable(Stream, boolean), unless another thread that must invokeStream.Listener.onDataAvailable(Stream, boolean)notices the outstanding demand first.It is always guaranteed that invoking this method from within
onDataAvailable(Stream, boolean)will not cause aStackOverflowError. - 
processData
public void processData(boolean immediate)  - 
getDataLength
public long getDataLength() - 
updateClose
 - 
getSendWindow
public int getSendWindow() - 
getRecvWindow
public int getRecvWindow() - 
updateSendWindow
public int updateSendWindow(int delta)  - 
updateRecvWindow
public int updateRecvWindow(int delta)  - 
close
public void close()- Specified by:
 closein interfaceAutoCloseable- Specified by:
 closein interfaceCloseable
 - 
onClose
public void onClose() - 
succeeded
 - 
failed
 - 
getInvocationType
- Specified by:
 getInvocationTypein interfaceInvocable- Returns:
 - The InvocationType of this object
 
 - 
dump
 - 
dump
Description copied from interface:DumpableDump this object (and children) into an Appendable using the provided indent after any new lines. The indent should not be applied to the first object dumped.- Specified by:
 dumpin interfaceDumpable- Parameters:
 out- The appendable to dump toindent- The indent to apply after any new lines.- Throws:
 IOException- if unable to write to Appendable
 - 
toString
 
 -