Class AbstractH2StreamMultiplexer.H2StreamChannelImpl
- java.lang.Object
-
- org.apache.hc.core5.http2.impl.nio.AbstractH2StreamMultiplexer.H2StreamChannelImpl
-
- All Implemented Interfaces:
Cancellable
,CapacityChannel
,DataStreamChannel
,StreamChannel<java.nio.ByteBuffer>
,H2StreamChannel
- Enclosing class:
- AbstractH2StreamMultiplexer
private class AbstractH2StreamMultiplexer.H2StreamChannelImpl extends java.lang.Object implements H2StreamChannel
-
-
Field Summary
Fields Modifier and Type Field Description private long
deadline
private int
id
private boolean
idle
private java.util.concurrent.atomic.AtomicInteger
inputWindow
private boolean
localEndStream
private java.util.concurrent.atomic.AtomicInteger
outputWindow
private boolean
remoteEndStream
-
Constructor Summary
Constructors Constructor Description H2StreamChannelImpl(int id, boolean idle, int initialInputWindowSize, int initialOutputWindowSize)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) void
appendState(java.lang.StringBuilder buf)
boolean
cancel()
Cancels the ongoing operation or process.void
endStream()
Terminates the underlying data stream and optionally writes a closing sequence.void
endStream(java.util.List<? extends Header> trailers)
Terminates the underlying data stream and optionally writes a closing sequence with the given trailers.(package private) int
getId()
(package private) java.util.concurrent.atomic.AtomicInteger
getInputWindow()
(package private) java.util.concurrent.atomic.AtomicInteger
getOutputWindow()
(package private) boolean
isLocalClosed()
(package private) boolean
isLocalReset()
(package private) boolean
isRemoteClosed()
(package private) boolean
isResetDeadline()
(package private) boolean
localReset(int code)
(package private) boolean
localReset(H2Error error)
void
push(java.util.List<Header> headers, AsyncPushProducer pushProducer)
void
requestOutput()
Signals intent by the data producer to produce more data.(package private) void
setLocalEndStream()
(package private) void
setRemoteEndStream()
void
submit(java.util.List<Header> headers, boolean endStream)
java.lang.String
toString()
void
update(int increment)
Updates data capacity information through this channel.int
write(java.nio.ByteBuffer payload)
Writes data from the buffer through this channel into the underlying byte stream.
-
-
-
Field Detail
-
id
private final int id
-
inputWindow
private final java.util.concurrent.atomic.AtomicInteger inputWindow
-
outputWindow
private final java.util.concurrent.atomic.AtomicInteger outputWindow
-
idle
private volatile boolean idle
-
remoteEndStream
private volatile boolean remoteEndStream
-
localEndStream
private volatile boolean localEndStream
-
deadline
private volatile long deadline
-
-
Method Detail
-
getId
int getId()
-
getOutputWindow
java.util.concurrent.atomic.AtomicInteger getOutputWindow()
-
getInputWindow
java.util.concurrent.atomic.AtomicInteger getInputWindow()
-
submit
public void submit(java.util.List<Header> headers, boolean endStream) throws java.io.IOException
- Specified by:
submit
in interfaceH2StreamChannel
- Throws:
java.io.IOException
-
push
public void push(java.util.List<Header> headers, AsyncPushProducer pushProducer) throws HttpException, java.io.IOException
- Specified by:
push
in interfaceH2StreamChannel
- Throws:
HttpException
java.io.IOException
-
update
public void update(int increment) throws java.io.IOException
Description copied from interface:CapacityChannel
Updates data capacity information through this channel. The total number of bytes the consumer is capable of accepting is incremented by the given increment number.- Specified by:
update
in interfaceCapacityChannel
- Parameters:
increment
- non-negative number of extra bytes the consumer can accept.- Throws:
java.io.IOException
-
write
public int write(java.nio.ByteBuffer payload) throws java.io.IOException
Description copied from interface:DataStreamChannel
Writes data from the buffer through this channel into the underlying byte stream. If the underlying byte stream is temporarily unable to accept more data it can return zero to indicate that no data could be written to the data stream. The data producer can choose to callDataStreamChannel.requestOutput()
to signal its intent to produce more data.- Specified by:
write
in interfaceDataStreamChannel
- Specified by:
write
in interfaceStreamChannel<java.nio.ByteBuffer>
- Parameters:
payload
- source of data- Returns:
- The number of bytes written, possibly zero
- Throws:
java.io.IOException
-
endStream
public void endStream(java.util.List<? extends Header> trailers) throws java.io.IOException
Description copied from interface:DataStreamChannel
Terminates the underlying data stream and optionally writes a closing sequence with the given trailers.Please note that some data streams may not support trailers and may silently ignore the trailers parameter.
- Specified by:
endStream
in interfaceDataStreamChannel
- Throws:
java.io.IOException
-
endStream
public void endStream() throws java.io.IOException
Description copied from interface:StreamChannel
Terminates the underlying data stream and optionally writes a closing sequence.- Specified by:
endStream
in interfaceStreamChannel<java.nio.ByteBuffer>
- Throws:
java.io.IOException
-
requestOutput
public void requestOutput()
Description copied from interface:DataStreamChannel
Signals intent by the data producer to produce more data. Once the channel is able to accept data its handler is expected to trigger an event to notify the data producer.- Specified by:
requestOutput
in interfaceDataStreamChannel
-
isRemoteClosed
boolean isRemoteClosed()
-
setRemoteEndStream
void setRemoteEndStream()
-
isLocalClosed
boolean isLocalClosed()
-
setLocalEndStream
void setLocalEndStream()
-
isLocalReset
boolean isLocalReset()
-
isResetDeadline
boolean isResetDeadline()
-
localReset
boolean localReset(int code) throws java.io.IOException
- Throws:
java.io.IOException
-
localReset
boolean localReset(H2Error error) throws java.io.IOException
- Throws:
java.io.IOException
-
cancel
public boolean cancel()
Description copied from interface:Cancellable
Cancels the ongoing operation or process.- Specified by:
cancel
in interfaceCancellable
- Returns:
true
if the operation or process has been cancelled as a result of this method call orfalse
if it has already been cancelled or not started.
-
appendState
void appendState(java.lang.StringBuilder buf)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-