Top Description Inners Fields Constructors Methods
jdk.internal.net.http.common

public Class SSLTube

extends Object
implements FlowTube
Class Inheritance
All Implemented Interfaces
jdk.internal.net.http.common.FlowTube, java.util.concurrent.Flow.Subscriber, java.util.concurrent.Flow.Publisher
Imports
java.nio.ByteBuffer, java.util.List, .Objects, java.util.concurrent.CompletableFuture, .Executor, .Flow, java.util.concurrent.atomic.AtomicReference, java.util.function.Consumer, javax.net.ssl.SSLEngine, .SSLException, .SSLHandshakeException, .SSLEngineResult.HandshakeStatus, jdk.internal.net.http.common.SubscriberWrapper.SchedulingAction

An implementation of FlowTube that wraps another FlowTube in an SSL flow.

The following diagram shows a typical usage of the SSLTube, where the SSLTube wraps a SocketTube on the right hand side, and is connected to an HttpConnection on the left hand side. +---------- SSLTube -------------------------+ | | | +---SSLFlowDelegate---+ | HttpConnection | | | | SocketTube read sink <- SSLSubscriberW. <- Reader <- upstreamR.() <---- read source (a subscriber) | | \ / | | (a publisher) | | SSLEngine | | HttpConnection | | / \ | | SocketTube write source -> SSLSubscriptionW. -> upstreamW.() -> Writer ----> write sink (a publisher) | | | | (a subscriber) | +---------------------+ | | | +---------------------------------------------+

Nested and Inner Type Summary

Modifier and TypeClass and Description
pack-priv static class
pack-priv class
pack-priv class
pack-priv class

Field Summary

Modifier and TypeField and Description
pack-priv final Logger
private final SSLEngine
private volatile boolean
private final SSLTube.SSLSubscriberWrapper
private volatile Flow.Subscription
private final SSLFlowDelegate
private final FlowTube
private final Demand
writeDemand

Outstanding write demand from the SSL Flow Delegate.

private final SSLTube.SSLSubscriptionWrapper

Constructor Summary

AccessConstructor and Description
public
SSLTube(SSLEngine engine, Executor executor, FlowTube tube)

public
SSLTube(SSLEngine engine, Executor executor, Consumer<ByteBuffer> recycler, FlowTube tube)

Method Summary

Modifier and TypeMethod and Description
pack-priv Throwable

Returns:

t or an SSLHandshakeException wrapping t, or null.
checkForHandshake
(Throwable
an exception from upstream, or null.
t
)

If the stream is completed before the handshake is finished, we want to forward an SSLHandshakeException downstream.

public void
connectFlows(FlowTube.TubePublisher
A new publisher for writing to the bidirectional flow.
writePub
,
FlowTube.TubeSubscriber
A new subscriber for reading from the bidirectional flow.
readSub
)

Overrides default jdk.internal.net.http.common.FlowTube.connectFlows.

Connects the bidirectional flows to a write Publisher and a read Subscriber.

pack-priv final String
public CompletableFuture<String>
private String
private boolean
public boolean

Returns:

true when one of this FlowTube Subscriber's OnError or onComplete methods have been invoked
isFinished
()

Implements jdk.internal.net.http.common.FlowTube.isFinished.

Tells whether, or not, this FlowTube has finished receiving data.

public void
onComplete()

Implements java.util.concurrent.Flow.Subscriber.onComplete.

Method invoked when it is known that no additional Subscriber method invocations will occur for a Subscription that is not already terminated by error, after which no other Subscriber methods are invoked by the Subscription.

public void
onError(Throwable
the exception
throwable
)

Implements java.util.concurrent.Flow.Subscriber.onError.

Method invoked upon an unrecoverable error encountered by a Publisher or Subscription, after which no other Subscriber methods are invoked by the Subscription.

public void
onNext(List<ByteBuffer>
the item
item
)

Implements java.util.concurrent.Flow.Subscriber.onNext.

Method invoked with a Subscription's next item.

public void
onSubscribe(Flow.Subscription
a new subscription
subscription
)

Implements java.util.concurrent.Flow.Subscriber.onSubscribe.

Method invoked prior to invoking any other Subscriber methods for the given Subscription.

public void
subscribe(Flow.Subscriber<? super List<ByteBuffer>>
the subscriber
s
)

Implements java.util.concurrent.Flow.Publisher.subscribe.

Adds the given Subscriber if possible.

public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait

Field Detail

debugback to summary
pack-priv final Logger debug
engineback to summary
private final SSLEngine engine
finishedback to summary
private volatile boolean finished
readSubscriberback to summary
private final SSLTube.SSLSubscriberWrapper readSubscriber
readSubscriptionback to summary
private volatile Flow.Subscription readSubscription
sslDelegateback to summary
private final SSLFlowDelegate sslDelegate
tubeback to summary
private final FlowTube tube
writeDemandback to summary
private final Demand writeDemand

Outstanding write demand from the SSL Flow Delegate.

writeSubscriptionback to summary
private final SSLTube.SSLSubscriptionWrapper writeSubscription

Constructor Detail

SSLTubeback to summary
public SSLTube(SSLEngine engine, Executor executor, FlowTube tube)
SSLTubeback to summary
public SSLTube(SSLEngine engine, Executor executor, Consumer<ByteBuffer> recycler, FlowTube tube)

Method Detail

checkForHandshakeback to summary
pack-priv Throwable checkForHandshake(Throwable t)

If the stream is completed before the handshake is finished, we want to forward an SSLHandshakeException downstream. If t is not null an exception will always be returned. If t is null an exception will be returned if the engine is handshaking.

Parameters
t:Throwable

an exception from upstream, or null.

Returns:Throwable

t or an SSLHandshakeException wrapping t, or null.

connectFlowsback to summary
public void connectFlows(FlowTube.TubePublisher writePub, FlowTube.TubeSubscriber readSub)

Overrides default jdk.internal.net.http.common.FlowTube.connectFlows.

Doc from jdk.internal.net.http.common.FlowTube.connectFlows.

Connects the bidirectional flows to a write Publisher and a read Subscriber. This method can be called sequentially several times to switch existing publishers and subscribers to a new pair of write subscriber and read publisher.

Parameters
writePub:FlowTube.TubePublisher

A new publisher for writing to the bidirectional flow.

readSub:FlowTube.TubeSubscriber

A new subscriber for reading from the bidirectional flow.

Annotations
@Override
dbgStringback to summary
pack-priv final String dbgString()
getALPNback to summary
public CompletableFuture<String> getALPN()
handshakeFailedback to summary
private String handshakeFailed()
handshakingback to summary
private boolean handshaking()
isFinishedback to summary
public boolean isFinished()

Implements jdk.internal.net.http.common.FlowTube.isFinished.

Tells whether, or not, this FlowTube has finished receiving data.

Returns:boolean

true when one of this FlowTube Subscriber's OnError or onComplete methods have been invoked

Annotations
@Override
onCompleteback to summary
public void onComplete()

Implements java.util.concurrent.Flow.Subscriber.onComplete.

Doc from java.util.concurrent.Flow.Subscriber.onComplete.

Method invoked when it is known that no additional Subscriber method invocations will occur for a Subscription that is not already terminated by error, after which no other Subscriber methods are invoked by the Subscription. If this method throws an exception, resulting behavior is undefined.

Annotations
@Override
onErrorback to summary
public void onError(Throwable throwable)

Implements java.util.concurrent.Flow.Subscriber.onError.

Doc from java.util.concurrent.Flow.Subscriber.onError.

Method invoked upon an unrecoverable error encountered by a Publisher or Subscription, after which no other Subscriber methods are invoked by the Subscription. If this method itself throws an exception, resulting behavior is undefined.

Parameters
throwable:Throwable

the exception

Annotations
@Override
onNextback to summary
public void onNext(List<ByteBuffer> item)

Implements java.util.concurrent.Flow.Subscriber.onNext.

Doc from java.util.concurrent.Flow.Subscriber.onNext.

Method invoked with a Subscription's next item. If this method throws an exception, resulting behavior is not guaranteed, but may cause the Subscription to be cancelled.

Parameters
item:List<ByteBuffer>

the item

Annotations
@Override
onSubscribeback to summary
public void onSubscribe(Flow.Subscription subscription)

Implements java.util.concurrent.Flow.Subscriber.onSubscribe.

Doc from java.util.concurrent.Flow.Subscriber.onSubscribe.

Method invoked prior to invoking any other Subscriber methods for the given Subscription. If this method throws an exception, resulting behavior is not guaranteed, but may cause the Subscription not to be established or to be cancelled.

Typically, implementations of this method invoke subscription.request to enable receiving items.

Parameters
subscription:Flow.Subscription

a new subscription

Annotations
@Override
subscribeback to summary
public void subscribe(Flow.Subscriber<? super List<ByteBuffer>> s)

Implements java.util.concurrent.Flow.Publisher.subscribe.

Doc from java.util.concurrent.Flow.Publisher.subscribe.

Adds the given Subscriber if possible. If already subscribed, or the attempt to subscribe fails due to policy violations or errors, the Subscriber's onError method is invoked with an IllegalStateException. Otherwise, the Subscriber's onSubscribe method is invoked with a new Subscription. Subscribers may enable receiving items by invoking the request method of this Subscription, and may unsubscribe by invoking its cancel method.

Parameters
s:Flow.Subscriber<? super List<ByteBuffer>>

the subscriber

Annotations
@Override
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Returns:String

a string representation of the object

Annotations
@Override
jdk.internal.net.http.common back to summary

pack-priv final Class SSLTube.DelegateWrapper

extends Object
implements TubeSubscriber
Class Inheritance
All Implemented Interfaces
jdk.internal.net.http.common.FlowTube.TubeSubscriber, java.util.concurrent.Flow.Subscriber

Field Summary

Modifier and TypeField and Description
pack-priv volatile boolean
private final Logger
private final FlowTube.TubeSubscriber
pack-priv volatile Throwable
pack-priv volatile boolean
pack-priv volatile boolean

Constructor Summary

AccessConstructor and Description
pack-priv
DelegateWrapper(Flow.Subscriber<? super List<ByteBuffer>> delegate, Logger debug)

Method Summary

Modifier and TypeMethod and Description
public void
dropSubscription()

Overrides default jdk.internal.net.http.common.FlowTube.TubeSubscriber.dropSubscription.

Called when the flow is connected again, and the subscription is handed over to a new subscriber.

public void
onComplete()

Implements java.util.concurrent.Flow.Subscriber.onComplete.

Method invoked when it is known that no additional Subscriber method invocations will occur for a Subscription that is not already terminated by error, after which no other Subscriber methods are invoked by the Subscription.

public void
onError(Throwable
the exception
t
)

Implements java.util.concurrent.Flow.Subscriber.onError.

Method invoked upon an unrecoverable error encountered by a Publisher or Subscription, after which no other Subscriber methods are invoked by the Subscription.

public void
onNext(List<ByteBuffer>
the item
item
)

Implements java.util.concurrent.Flow.Subscriber.onNext.

Method invoked with a Subscription's next item.

public void
onSubscribe(Flow.Subscription
a new subscription
subscription
)

Implements java.util.concurrent.Flow.Subscriber.onSubscribe.

Method invoked prior to invoking any other Subscriber methods for the given Subscription.

private void
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait

Field Detail

completedback to summary
pack-priv volatile boolean completed
debugback to summary
private final Logger debug
delegateback to summary
private final FlowTube.TubeSubscriber delegate
errorback to summary
pack-priv volatile Throwable error
subscribedCalledback to summary
pack-priv volatile boolean subscribedCalled
subscribedDoneback to summary
pack-priv volatile boolean subscribedDone

Constructor Detail

DelegateWrapperback to summary
pack-priv DelegateWrapper(Flow.Subscriber<? super List<ByteBuffer>> delegate, Logger debug)

Method Detail

dropSubscriptionback to summary
public void dropSubscription()

Overrides default jdk.internal.net.http.common.FlowTube.TubeSubscriber.dropSubscription.

Doc from jdk.internal.net.http.common.FlowTube.TubeSubscriber.dropSubscription.

Called when the flow is connected again, and the subscription is handed over to a new subscriber. Once dropSubscription() is called, the TubeSubscriber should stop calling any method on its subscription.

Annotations
@Override
onCompleteback to summary
public void onComplete()

Implements java.util.concurrent.Flow.Subscriber.onComplete.

Doc from java.util.concurrent.Flow.Subscriber.onComplete.

Method invoked when it is known that no additional Subscriber method invocations will occur for a Subscription that is not already terminated by error, after which no other Subscriber methods are invoked by the Subscription. If this method throws an exception, resulting behavior is undefined.

Annotations
@Override
onErrorback to summary
public void onError(Throwable t)

Implements java.util.concurrent.Flow.Subscriber.onError.

Doc from java.util.concurrent.Flow.Subscriber.onError.

Method invoked upon an unrecoverable error encountered by a Publisher or Subscription, after which no other Subscriber methods are invoked by the Subscription. If this method itself throws an exception, resulting behavior is undefined.

Parameters
t:Throwable

the exception

Annotations
@Override
onNextback to summary
public void onNext(List<ByteBuffer> item)

Implements java.util.concurrent.Flow.Subscriber.onNext.

Doc from java.util.concurrent.Flow.Subscriber.onNext.

Method invoked with a Subscription's next item. If this method throws an exception, resulting behavior is not guaranteed, but may cause the Subscription to be cancelled.

Parameters
item:List<ByteBuffer>

the item

Annotations
@Override
onSubscribeback to summary
public void onSubscribe(Flow.Subscription subscription)

Implements java.util.concurrent.Flow.Subscriber.onSubscribe.

Doc from java.util.concurrent.Flow.Subscriber.onSubscribe.

Method invoked prior to invoking any other Subscriber methods for the given Subscription. If this method throws an exception, resulting behavior is not guaranteed, but may cause the Subscription not to be established or to be cancelled.

Typically, implementations of this method invoke subscription.request to enable receiving items.

Parameters
subscription:Flow.Subscription

a new subscription

Annotations
@Override
onSubscribeback to summary
private void onSubscribe(Consumer<Flow.Subscription> method, Flow.Subscription subscription)
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Returns:String

a string representation of the object

Annotations
@Override
jdk.internal.net.http.common back to summary

pack-priv final Class SSLTube.SSLSubscriberWrapper

extends Object
implements TubeSubscriber
Class Inheritance
All Implemented Interfaces
jdk.internal.net.http.common.FlowTube.TubeSubscriber, java.util.concurrent.Flow.Subscriber

Field Summary

Modifier and TypeField and Description
private final AtomicReference<Throwable>
private volatile boolean
private AtomicReference<SSLTube.DelegateWrapper>
private volatile SSLTube.DelegateWrapper

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
private void
public void
dropSubscription()

Overrides default jdk.internal.net.http.common.FlowTube.TubeSubscriber.dropSubscription.

Called when the flow is connected again, and the subscription is handed over to a new subscriber.

public void
onComplete()

Implements java.util.concurrent.Flow.Subscriber.onComplete.

Method invoked when it is known that no additional Subscriber method invocations will occur for a Subscription that is not already terminated by error, after which no other Subscriber methods are invoked by the Subscription.

public void
onError(Throwable
the exception
throwable
)

Implements java.util.concurrent.Flow.Subscriber.onError.

Method invoked upon an unrecoverable error encountered by a Publisher or Subscription, after which no other Subscriber methods are invoked by the Subscription.

public void
private void
public void
onNext(List<ByteBuffer>
the item
item
)

Implements java.util.concurrent.Flow.Subscriber.onNext.

Method invoked with a Subscription's next item.

public void
onSubscribe(Flow.Subscription
a new subscription
subscription
)

Implements java.util.concurrent.Flow.Subscriber.onSubscribe.

Method invoked prior to invoking any other Subscriber methods for the given Subscription.

private void
pack-priv void
pack-priv void
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait

Field Detail

errorRefback to summary
private final AtomicReference<Throwable> errorRef
onCompleteReceivedback to summary
private volatile boolean onCompleteReceived
pendingDelegateback to summary
private AtomicReference<SSLTube.DelegateWrapper> pendingDelegate
subscribedback to summary
private volatile SSLTube.DelegateWrapper subscribed

Constructor Detail

SSLSubscriberWrapperback to summary
pack-priv SSLSubscriberWrapper()

Method Detail

completeback to summary
private void complete(SSLTube.DelegateWrapper subscriberImpl, Throwable t)
dropSubscriptionback to summary
public void dropSubscription()

Overrides default jdk.internal.net.http.common.FlowTube.TubeSubscriber.dropSubscription.

Doc from jdk.internal.net.http.common.FlowTube.TubeSubscriber.dropSubscription.

Called when the flow is connected again, and the subscription is handed over to a new subscriber. Once dropSubscription() is called, the TubeSubscriber should stop calling any method on its subscription.

Annotations
@Override
onCompleteback to summary
public void onComplete()

Implements java.util.concurrent.Flow.Subscriber.onComplete.

Doc from java.util.concurrent.Flow.Subscriber.onComplete.

Method invoked when it is known that no additional Subscriber method invocations will occur for a Subscription that is not already terminated by error, after which no other Subscriber methods are invoked by the Subscription. If this method throws an exception, resulting behavior is undefined.

Annotations
@Override
onErrorback to summary
public void onError(Throwable throwable)

Implements java.util.concurrent.Flow.Subscriber.onError.

Doc from java.util.concurrent.Flow.Subscriber.onError.

Method invoked upon an unrecoverable error encountered by a Publisher or Subscription, after which no other Subscriber methods are invoked by the Subscription. If this method itself throws an exception, resulting behavior is undefined.

Parameters
throwable:Throwable

the exception

Annotations
@Override
onErrorImplback to summary
public void onErrorImpl(Throwable throwable)
onNewSubscriptionback to summary
private void onNewSubscription(SSLTube.DelegateWrapper subscriberImpl, Flow.Subscription subscription)
onNextback to summary
public void onNext(List<ByteBuffer> item)

Implements java.util.concurrent.Flow.Subscriber.onNext.

Doc from java.util.concurrent.Flow.Subscriber.onNext.

Method invoked with a Subscription's next item. If this method throws an exception, resulting behavior is not guaranteed, but may cause the Subscription to be cancelled.

Parameters
item:List<ByteBuffer>

the item

Annotations
@Override
onSubscribeback to summary
public void onSubscribe(Flow.Subscription subscription)

Implements java.util.concurrent.Flow.Subscriber.onSubscribe.

Doc from java.util.concurrent.Flow.Subscriber.onSubscribe.

Method invoked prior to invoking any other Subscriber methods for the given Subscription. If this method throws an exception, resulting behavior is not guaranteed, but may cause the Subscription not to be established or to be cancelled.

Typically, implementations of this method invoke subscription.request to enable receiving items.

Parameters
subscription:Flow.Subscription

a new subscription

Annotations
@Override
onSubscribeImplback to summary
private void onSubscribeImpl(Flow.Subscription subscription)
processPendingSubscriberback to summary
pack-priv void processPendingSubscriber()
setDelegateback to summary
pack-priv void setDelegate(Flow.Subscriber<? super List<ByteBuffer>> delegate)
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Returns:String

a string representation of the object

Annotations
@Override
jdk.internal.net.http.common back to summary

pack-priv final Class SSLTube.SSLSubscriptionWrapper

extends Object
implements Subscription
Class Inheritance
All Implemented Interfaces
java.util.concurrent.Flow.Subscription

Field Summary

Modifier and TypeField and Description
private volatile boolean
pack-priv volatile Flow.Subscription

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
public void
cancel()

Implements java.util.concurrent.Flow.Subscription.cancel.

Causes the Subscriber to (eventually) stop receiving messages.

public void
request(long
the increment of demand; a value of Long.MAX_VALUE may be considered as effectively unbounded
n
)

Implements java.util.concurrent.Flow.Subscription.request.

Adds the given number n of items to the current unfulfilled demand for this subscription.

pack-priv void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

cancelledback to summary
private volatile boolean cancelled
delegateback to summary
pack-priv volatile Flow.Subscription delegate

Constructor Detail

SSLSubscriptionWrapperback to summary
pack-priv SSLSubscriptionWrapper()

Method Detail

cancelback to summary
public void cancel()

Implements java.util.concurrent.Flow.Subscription.cancel.

Doc from java.util.concurrent.Flow.Subscription.cancel.

Causes the Subscriber to (eventually) stop receiving messages. Implementation is best-effort -- additional messages may be received after invoking this method. A cancelled subscription need not ever receive an onComplete or onError signal.

Annotations
@Override
requestback to summary
public void request(long n)

Implements java.util.concurrent.Flow.Subscription.request.

Doc from java.util.concurrent.Flow.Subscription.request.

Adds the given number n of items to the current unfulfilled demand for this subscription. If n is less than or equal to zero, the Subscriber will receive an onError signal with an IllegalArgumentException argument. Otherwise, the Subscriber will receive up to n additional onNext invocations (or fewer if terminated).

Parameters
n:long

the increment of demand; a value of Long.MAX_VALUE may be considered as effectively unbounded

Annotations
@Override
setSubscriptionback to summary
pack-priv void setSubscription(Flow.Subscription sub)
jdk.internal.net.http.common back to summary

pack-priv final Class SSLTube.SSLTubeFlowDelegate

extends SSLFlowDelegate
Class Inheritance

Field Summary

Inherited from jdk.internal.net.http.common.SSLFlowDelegate:
adaptiveAppBufferSizealpnCFapplicationBufferSizeclose_notify_receiveddebugengineexechandshakeStateidmonitorpacketBufferSizereaderreaderCFrecyclerscountstateListstopCFstoppedtubeNamewriterwriterCF

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
protected Throwable
pack-priv void
connect(Flow.Subscriber<? super List<ByteBuffer>>
The left hand side read sink (typically, the HttpConnection read subscriber).
downReader
,
Flow.Subscriber<? super List<ByteBuffer>>
The right hand side write sink (typically the SocketTube write subscriber).
downWriter
)

Overrides jdk.internal.net.http.common.SSLFlowDelegate.connect.

Connects the read sink (downReader) to the SSLFlowDelegate Reader, and the write sink (downWriter) to the SSLFlowDelegate Writer.

protected SubscriberWrapper.SchedulingAction
Inherited from jdk.internal.net.http.common.SSLFlowDelegate:
alpncloseNotifyReceiveddbgStringdoClosuregetAppBuffergetNetBuffermonitorresetReaderDemandresumeReadertrySetALPNupstreamReaderupstreamWriter

Constructor Detail

SSLTubeFlowDelegateback to summary
pack-priv SSLTubeFlowDelegate(SSLEngine engine, Executor executor, Consumer<ByteBuffer> recycler, SSLTube.SSLSubscriberWrapper readSubscriber, FlowTube tube)

Method Detail

checkForHandshakeback to summary
protected Throwable checkForHandshake(Throwable t)

Overrides jdk.internal.net.http.common.SSLFlowDelegate.checkForHandshake.

Annotations
@Override
connectback to summary
pack-priv void connect(Flow.Subscriber<? super List<ByteBuffer>> downReader, Flow.Subscriber<? super List<ByteBuffer>> downWriter)

Overrides jdk.internal.net.http.common.SSLFlowDelegate.connect.

Doc from jdk.internal.net.http.common.SSLFlowDelegate.connect.

Connects the read sink (downReader) to the SSLFlowDelegate Reader, and the write sink (downWriter) to the SSLFlowDelegate Writer. Called from within the constructor. Overwritten by SSLTube.

Parameters
downReader:Flow.Subscriber<? super List<ByteBuffer>>

The left hand side read sink (typically, the HttpConnection read subscriber).

downWriter:Flow.Subscriber<? super List<ByteBuffer>>

The right hand side write sink (typically the SocketTube write subscriber).

enterReadSchedulingback to summary
protected SubscriberWrapper.SchedulingAction enterReadScheduling()

Overrides jdk.internal.net.http.common.SSLFlowDelegate.enterReadScheduling.