< 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 >