< prev index next >

src/java.httpclient/share/classes/java/net/http/AsyncSSLConnection.java

Print this page
rev 15335 : Async Queues

@@ -43,10 +43,15 @@
         super(addr, client);
         delegate = new PlainHttpConnection(addr, client);
         sslDelegate = new AsyncSSLDelegate(delegate, client, ap);
     }
 
+    synchronized void configureMode(Mode mode) throws IOException {
+        super.configureMode(mode);
+        delegate.configureMode(mode);
+    }
+
     @Override
     public void connect() throws IOException, InterruptedException {
         delegate.connect();
     }
 

@@ -79,25 +84,50 @@
     ConnectionPool.CacheKey cacheKey() {
         return ConnectionPool.cacheKey(address, null);
     }
 
     @Override
-    synchronized long write(ByteBuffer[] buffers, int start, int number) throws IOException {
+    long write(ByteBuffer[] buffers, int start, int number) throws IOException {
         ByteBuffer[] bufs = Utils.reduce(buffers, start, number);
         long n = Utils.remaining(bufs);
-        sslDelegate.write(bufs);
+        sslDelegate.writeAsync(bufs);
+        sslDelegate.flushAsync();
         return n;
     }
 
     @Override
     long write(ByteBuffer buffer) throws IOException {
         long n = buffer.remaining();
-        sslDelegate.write(buffer);
+        sslDelegate.writeAsync(new ByteBuffer[]{buffer});
+        sslDelegate.flushAsync();
         return n;
     }
 
     @Override
+    public void writeAsyncUnordered(ByteBuffer[] buffers) throws IOException {
+        if (mode != Mode.ASYNC) {
+            write(buffers, 0 , buffers.length);
+        } else {
+            sslDelegate.writeAsyncUnordered(buffers);
+        }
+    }
+
+    @Override
+    public void writeAsync(ByteBuffer[] buffers) throws IOException {
+        if (mode != Mode.ASYNC) {
+            write(buffers, 0 , buffers.length);
+        } else {
+            sslDelegate.writeAsync(buffers);
+        }
+    }
+
+    @Override
+    public void flushAsync() {
+        sslDelegate.flushAsync();
+    }
+
+    @Override
     public void close() {
         Utils.close(sslDelegate, delegate.channel());
     }
 
     @Override
< prev index next >