From 220b5f9a3bac6b78f6ad2d2e159057eb9bcb9908 Mon Sep 17 00:00:00 2001 From: Jake Wharton Date: Tue, 26 Feb 2013 23:17:22 -0800 Subject: [PATCH] Add evictAll method to connection pool. Closes #104. --- .../java/com/squareup/okhttp/ConnectionPool.java | 13 +++++++++++++ .../com/squareup/okhttp/ConnectionPoolTest.java | 12 ++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/main/java/com/squareup/okhttp/ConnectionPool.java b/src/main/java/com/squareup/okhttp/ConnectionPool.java index 438fe91db..66462037f 100644 --- a/src/main/java/com/squareup/okhttp/ConnectionPool.java +++ b/src/main/java/com/squareup/okhttp/ConnectionPool.java @@ -241,4 +241,17 @@ public class ConnectionPool { } } } + + /** Close and remove all connections in the pool. */ + public void evictAll() { + List connections; + synchronized (this) { + connections = new ArrayList(this.connections); + this.connections.clear(); + } + + for (Connection connection : connections) { + Util.closeQuietly(connection); + } + } } diff --git a/src/test/java/com/squareup/okhttp/ConnectionPoolTest.java b/src/test/java/com/squareup/okhttp/ConnectionPoolTest.java index dca9625bd..515453e08 100644 --- a/src/test/java/com/squareup/okhttp/ConnectionPoolTest.java +++ b/src/test/java/com/squareup/okhttp/ConnectionPoolTest.java @@ -385,6 +385,18 @@ public final class ConnectionPoolTest { assertEquals(0, pool.getSpdyConnectionCount()); } + @Test public void evictAllConnections() { + ConnectionPool pool = new ConnectionPool(10, KEEP_ALIVE_DURATION_MS); + pool.recycle(httpA); + Util.closeQuietly(httpA); // Include a closed connection in the pool. + pool.recycle(httpB); + pool.maybeShare(spdyA); + assertEquals(3, pool.getConnectionCount()); + + pool.evictAll(); + assertEquals(0, pool.getConnectionCount()); + } + private void assertPooled(ConnectionPool pool, Connection... connections) throws Exception { assertEquals(Arrays.asList(connections), pool.getConnections()); }