jdk/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/PlainTunnelingConnection.java
--- a/jdk/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/PlainTunnelingConnection.java Tue Aug 15 19:19:50 2017 -0700
+++ b/jdk/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/PlainTunnelingConnection.java Wed Aug 16 10:55:05 2017 +0100
@@ -34,12 +34,15 @@
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
import java.util.concurrent.CompletableFuture;
+import java.util.function.Consumer;
+import java.util.function.Supplier;
/**
* A plain text socket tunnel through a proxy. Uses "CONNECT" but does not
- * encrypt. Used by WebSocket. Subclassed in SSLTunnelConnection for encryption.
+ * encrypt. Used by WebSocket, as well as HTTP over SSL + Proxy.
+ * Wrapped in SSLTunnelConnection or AsyncSSLTunnelConnection for encryption.
*/
-class PlainTunnelingConnection extends HttpConnection {
+class PlainTunnelingConnection extends HttpConnection implements AsyncConnection {
final PlainHttpConnection delegate;
protected final InetSocketAddress proxyAddr;
@@ -116,17 +119,17 @@
}
@Override
- void writeAsync(ByteBufferReference[] buffers) throws IOException {
+ public void writeAsync(ByteBufferReference[] buffers) throws IOException {
delegate.writeAsync(buffers);
}
@Override
- void writeAsyncUnordered(ByteBufferReference[] buffers) throws IOException {
+ public void writeAsyncUnordered(ByteBufferReference[] buffers) throws IOException {
delegate.writeAsyncUnordered(buffers);
}
@Override
- void flushAsync() throws IOException {
+ public void flushAsync() throws IOException {
delegate.flushAsync();
}
@@ -165,4 +168,32 @@
boolean isProxied() {
return true;
}
+
+ @Override
+ public void setAsyncCallbacks(Consumer<ByteBufferReference> asyncReceiver,
+ Consumer<Throwable> errorReceiver,
+ Supplier<ByteBufferReference> readBufferSupplier) {
+ delegate.setAsyncCallbacks(asyncReceiver, errorReceiver, readBufferSupplier);
+ }
+
+ @Override
+ public void startReading() {
+ delegate.startReading();
+ }
+
+ @Override
+ public void stopAsyncReading() {
+ delegate.stopAsyncReading();
+ }
+
+ @Override
+ public void enableCallback() {
+ delegate.enableCallback();
+ }
+
+ @Override
+ synchronized void configureMode(Mode mode) throws IOException {
+ super.configureMode(mode);
+ delegate.configureMode(mode);
+ }
}