mirror of
https://github.com/square/okhttp.git
synced 2026-01-17 08:42:25 +03:00
Merge pull request #2187 from square/jwilson_0102_fix_some_get_prefixes
Fix some get prefixes on Cache and ConnectionPool.
This commit is contained in:
@@ -45,8 +45,8 @@ public class AndroidShimResponseCache extends ResponseCache {
|
||||
|
||||
public boolean isEquivalent(File directory, long maxSize) {
|
||||
Cache installedCache = getCache();
|
||||
return (installedCache.getDirectory().equals(directory)
|
||||
&& installedCache.getMaxSize() == maxSize
|
||||
return (installedCache.directory().equals(directory)
|
||||
&& installedCache.maxSize() == maxSize
|
||||
&& !installedCache.isClosed());
|
||||
}
|
||||
|
||||
@@ -83,14 +83,14 @@ public class AndroidShimResponseCache extends ResponseCache {
|
||||
* greater than the {@link #maxSize} if a background deletion is pending.
|
||||
*/
|
||||
public long size() throws IOException {
|
||||
return delegate.getSize();
|
||||
return delegate.size();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the maximum number of bytes that this cache should use to store its data.
|
||||
*/
|
||||
public long maxSize() {
|
||||
return delegate.getMaxSize();
|
||||
return delegate.maxSize();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -106,7 +106,7 @@ public class AndroidShimResponseCache extends ResponseCache {
|
||||
* validate a locally cached response.
|
||||
*/
|
||||
public int getNetworkCount() {
|
||||
return delegate.getNetworkCount();
|
||||
return delegate.networkCount();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -114,7 +114,7 @@ public class AndroidShimResponseCache extends ResponseCache {
|
||||
* conditional {@code GET} requests that were validated over the network.
|
||||
*/
|
||||
public int getHitCount() {
|
||||
return delegate.getHitCount();
|
||||
return delegate.hitCount();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -122,7 +122,7 @@ public class AndroidShimResponseCache extends ResponseCache {
|
||||
* and requests that were made on the client's behalf to handle a redirects and retries.
|
||||
*/
|
||||
public int getRequestCount() {
|
||||
return delegate.getRequestCount();
|
||||
return delegate.requestCount();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -226,8 +226,8 @@ public final class CacheTest {
|
||||
assertEquals("spiders", in1.readUtf8("spiders".length()));
|
||||
assertTrue(in1.exhausted());
|
||||
in1.close();
|
||||
assertEquals(1, cache.getWriteSuccessCount());
|
||||
assertEquals(0, cache.getWriteAbortCount());
|
||||
assertEquals(1, cache.writeSuccessCount());
|
||||
assertEquals(0, cache.writeAbortCount());
|
||||
|
||||
Response response2 = client.newCall(request).execute();
|
||||
BufferedSource in2 = response2.body().source();
|
||||
@@ -238,10 +238,10 @@ public final class CacheTest {
|
||||
|
||||
assertTrue(in2.exhausted());
|
||||
in2.close();
|
||||
assertEquals(1, cache.getWriteSuccessCount());
|
||||
assertEquals(0, cache.getWriteAbortCount());
|
||||
assertEquals(2, cache.getRequestCount());
|
||||
assertEquals(1, cache.getHitCount());
|
||||
assertEquals(1, cache.writeSuccessCount());
|
||||
assertEquals(0, cache.writeAbortCount());
|
||||
assertEquals(2, cache.requestCount());
|
||||
assertEquals(1, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void secureResponseCaching() throws IOException {
|
||||
@@ -271,9 +271,9 @@ public final class CacheTest {
|
||||
Response response2 = client.newCall(request).execute(); // Cached!
|
||||
assertEquals("ABC", response2.body().string());
|
||||
|
||||
assertEquals(2, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(1, cache.getHitCount());
|
||||
assertEquals(2, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(1, cache.hitCount());
|
||||
|
||||
assertEquals(cipherSuite, response2.handshake().cipherSuite());
|
||||
assertEquals(localCerts, response2.handshake().localCertificates());
|
||||
@@ -302,9 +302,9 @@ public final class CacheTest {
|
||||
Response response2 = client.newCall(request).execute(); // Cached!
|
||||
assertEquals("ABC", response2.body().string());
|
||||
|
||||
assertEquals(4, cache.getRequestCount()); // 2 requests + 2 redirects
|
||||
assertEquals(2, cache.getNetworkCount());
|
||||
assertEquals(2, cache.getHitCount());
|
||||
assertEquals(4, cache.requestCount()); // 2 requests + 2 redirects
|
||||
assertEquals(2, cache.networkCount());
|
||||
assertEquals(2, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void redirectToCachedResult() throws Exception {
|
||||
@@ -368,8 +368,8 @@ public final class CacheTest {
|
||||
assertEquals("ABC", response2.body().string());
|
||||
assertNotNull(response2.handshake().cipherSuite());
|
||||
|
||||
assertEquals(4, cache.getRequestCount()); // 2 direct + 2 redirect = 4
|
||||
assertEquals(2, cache.getHitCount());
|
||||
assertEquals(4, cache.requestCount()); // 2 direct + 2 redirect = 4
|
||||
assertEquals(2, cache.hitCount());
|
||||
assertEquals(response1.handshake().cipherSuite(), response2.handshake().cipherSuite());
|
||||
}
|
||||
|
||||
@@ -407,8 +407,8 @@ public final class CacheTest {
|
||||
Response response2 = get(server.url("/"));
|
||||
assertEquals("ABC", response2.body().string());
|
||||
|
||||
assertEquals(4, cache.getRequestCount()); // 2 direct + 2 redirect = 4
|
||||
assertEquals(2, cache.getHitCount());
|
||||
assertEquals(4, cache.requestCount()); // 2 direct + 2 redirect = 4
|
||||
assertEquals(2, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void foundCachedWithExpiresHeader() throws Exception {
|
||||
@@ -499,12 +499,12 @@ public final class CacheTest {
|
||||
bodySource.close();
|
||||
}
|
||||
|
||||
assertEquals(1, cache.getWriteAbortCount());
|
||||
assertEquals(0, cache.getWriteSuccessCount());
|
||||
assertEquals(1, cache.writeAbortCount());
|
||||
assertEquals(0, cache.writeSuccessCount());
|
||||
Response response = get(server.url("/"));
|
||||
assertEquals("Request #2", response.body().string());
|
||||
assertEquals(1, cache.getWriteAbortCount());
|
||||
assertEquals(1, cache.getWriteSuccessCount());
|
||||
assertEquals(1, cache.writeAbortCount());
|
||||
assertEquals(1, cache.writeSuccessCount());
|
||||
}
|
||||
|
||||
@Test public void clientPrematureDisconnectWithContentLengthHeader() throws IOException {
|
||||
@@ -538,12 +538,12 @@ public final class CacheTest {
|
||||
} catch (IllegalStateException expected) {
|
||||
}
|
||||
|
||||
assertEquals(1, cache.getWriteAbortCount());
|
||||
assertEquals(0, cache.getWriteSuccessCount());
|
||||
assertEquals(1, cache.writeAbortCount());
|
||||
assertEquals(0, cache.writeSuccessCount());
|
||||
Response response2 = get(server.url("/"));
|
||||
assertEquals("Request #2", response2.body().string());
|
||||
assertEquals(1, cache.getWriteAbortCount());
|
||||
assertEquals(1, cache.getWriteSuccessCount());
|
||||
assertEquals(1, cache.writeAbortCount());
|
||||
assertEquals(1, cache.writeSuccessCount());
|
||||
}
|
||||
|
||||
@Test public void defaultExpirationDateFullyCachedForLessThan24Hours() throws Exception {
|
||||
@@ -1009,7 +1009,7 @@ public final class CacheTest {
|
||||
|
||||
assertEquals("A", get(server.url("/")).body().string());
|
||||
assertEquals("A", get(server.url("/")).body().string());
|
||||
assertEquals(1, client.connectionPool().getIdleConnectionCount());
|
||||
assertEquals(1, client.connectionPool().idleConnectionCount());
|
||||
}
|
||||
|
||||
@Test public void expiresDateBeforeModifiedDate() throws Exception {
|
||||
@@ -1123,9 +1123,9 @@ public final class CacheTest {
|
||||
Response response = client.newCall(request).execute();
|
||||
assertTrue(response.body().source().exhausted());
|
||||
assertEquals(504, response.code());
|
||||
assertEquals(1, cache.getRequestCount());
|
||||
assertEquals(0, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(1, cache.requestCount());
|
||||
assertEquals(0, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void requestOnlyIfCachedWithFullResponseCached() throws IOException {
|
||||
@@ -1141,9 +1141,9 @@ public final class CacheTest {
|
||||
.build();
|
||||
Response response = client.newCall(request).execute();
|
||||
assertEquals("A", response.body().string());
|
||||
assertEquals(2, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(1, cache.getHitCount());
|
||||
assertEquals(2, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(1, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void requestOnlyIfCachedWithConditionalResponseCached() throws IOException {
|
||||
@@ -1160,9 +1160,9 @@ public final class CacheTest {
|
||||
Response response = client.newCall(request).execute();
|
||||
assertTrue(response.body().source().exhausted());
|
||||
assertEquals(504, response.code());
|
||||
assertEquals(2, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(2, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void requestOnlyIfCachedWithUnhelpfulResponseCached() throws IOException {
|
||||
@@ -1177,9 +1177,9 @@ public final class CacheTest {
|
||||
Response response = client.newCall(request).execute();
|
||||
assertTrue(response.body().source().exhausted());
|
||||
assertEquals(504, response.code());
|
||||
assertEquals(2, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(2, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void requestCacheControlNoCache() throws Exception {
|
||||
@@ -1368,14 +1368,14 @@ public final class CacheTest {
|
||||
.setBody("C"));
|
||||
|
||||
assertEquals("A", get(server.url("/")).body().string());
|
||||
assertEquals(1, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(1, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
assertEquals("B", get(server.url("/")).body().string());
|
||||
assertEquals("C", get(server.url("/")).body().string());
|
||||
assertEquals(3, cache.getRequestCount());
|
||||
assertEquals(3, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(3, cache.requestCount());
|
||||
assertEquals(3, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void statisticsConditionalCacheHit() throws Exception {
|
||||
@@ -1389,14 +1389,14 @@ public final class CacheTest {
|
||||
.setResponseCode(HttpURLConnection.HTTP_NOT_MODIFIED));
|
||||
|
||||
assertEquals("A", get(server.url("/")).body().string());
|
||||
assertEquals(1, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(1, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
assertEquals("A", get(server.url("/")).body().string());
|
||||
assertEquals("A", get(server.url("/")).body().string());
|
||||
assertEquals(3, cache.getRequestCount());
|
||||
assertEquals(3, cache.getNetworkCount());
|
||||
assertEquals(2, cache.getHitCount());
|
||||
assertEquals(3, cache.requestCount());
|
||||
assertEquals(3, cache.networkCount());
|
||||
assertEquals(2, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void statisticsFullCacheHit() throws Exception {
|
||||
@@ -1405,14 +1405,14 @@ public final class CacheTest {
|
||||
.setBody("A"));
|
||||
|
||||
assertEquals("A", get(server.url("/")).body().string());
|
||||
assertEquals(1, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(1, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
assertEquals("A", get(server.url("/")).body().string());
|
||||
assertEquals("A", get(server.url("/")).body().string());
|
||||
assertEquals(3, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(2, cache.getHitCount());
|
||||
assertEquals(3, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(2, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void varyMatchesChangedRequestHeaderField() throws Exception {
|
||||
@@ -1932,10 +1932,10 @@ public final class CacheTest {
|
||||
+ "2\n"
|
||||
+ "\n"
|
||||
+ "CLEAN " + urlKey + " " + entryMetadata.length() + " " + entryBody.length() + "\n";
|
||||
writeFile(cache.getDirectory(), urlKey + ".0", entryMetadata);
|
||||
writeFile(cache.getDirectory(), urlKey + ".1", entryBody);
|
||||
writeFile(cache.getDirectory(), "journal", journalBody);
|
||||
cache = new Cache(cache.getDirectory(), Integer.MAX_VALUE, fileSystem);
|
||||
writeFile(cache.directory(), urlKey + ".0", entryMetadata);
|
||||
writeFile(cache.directory(), urlKey + ".1", entryBody);
|
||||
writeFile(cache.directory(), "journal", journalBody);
|
||||
cache = new Cache(cache.directory(), Integer.MAX_VALUE, fileSystem);
|
||||
client = client.newBuilder()
|
||||
.cache(cache)
|
||||
.build();
|
||||
@@ -1980,11 +1980,11 @@ public final class CacheTest {
|
||||
+ "\n"
|
||||
+ "DIRTY " + urlKey + "\n"
|
||||
+ "CLEAN " + urlKey + " " + entryMetadata.length() + " " + entryBody.length() + "\n";
|
||||
writeFile(cache.getDirectory(), urlKey + ".0", entryMetadata);
|
||||
writeFile(cache.getDirectory(), urlKey + ".1", entryBody);
|
||||
writeFile(cache.getDirectory(), "journal", journalBody);
|
||||
writeFile(cache.directory(), urlKey + ".0", entryMetadata);
|
||||
writeFile(cache.directory(), urlKey + ".1", entryBody);
|
||||
writeFile(cache.directory(), "journal", journalBody);
|
||||
cache.close();
|
||||
cache = new Cache(cache.getDirectory(), Integer.MAX_VALUE, fileSystem);
|
||||
cache = new Cache(cache.directory(), Integer.MAX_VALUE, fileSystem);
|
||||
client = client.newBuilder()
|
||||
.cache(cache)
|
||||
.build();
|
||||
@@ -2029,11 +2029,11 @@ public final class CacheTest {
|
||||
+ "\n"
|
||||
+ "DIRTY " + urlKey + "\n"
|
||||
+ "CLEAN " + urlKey + " " + entryMetadata.length() + " " + entryBody.length() + "\n";
|
||||
writeFile(cache.getDirectory(), urlKey + ".0", entryMetadata);
|
||||
writeFile(cache.getDirectory(), urlKey + ".1", entryBody);
|
||||
writeFile(cache.getDirectory(), "journal", journalBody);
|
||||
writeFile(cache.directory(), urlKey + ".0", entryMetadata);
|
||||
writeFile(cache.directory(), urlKey + ".1", entryBody);
|
||||
writeFile(cache.directory(), "journal", journalBody);
|
||||
cache.close();
|
||||
cache = new Cache(cache.getDirectory(), Integer.MAX_VALUE, fileSystem);
|
||||
cache = new Cache(cache.directory(), Integer.MAX_VALUE, fileSystem);
|
||||
client = client.newBuilder()
|
||||
.cache(cache)
|
||||
.build();
|
||||
@@ -2065,11 +2065,11 @@ public final class CacheTest {
|
||||
+ "\n"
|
||||
+ "DIRTY " + urlKey + "\n"
|
||||
+ "CLEAN " + urlKey + " " + entryMetadata.length() + " " + entryBody.length() + "\n";
|
||||
writeFile(cache.getDirectory(), urlKey + ".0", entryMetadata);
|
||||
writeFile(cache.getDirectory(), urlKey + ".1", entryBody);
|
||||
writeFile(cache.getDirectory(), "journal", journalBody);
|
||||
writeFile(cache.directory(), urlKey + ".0", entryMetadata);
|
||||
writeFile(cache.directory(), urlKey + ".1", entryBody);
|
||||
writeFile(cache.directory(), "journal", journalBody);
|
||||
cache.close();
|
||||
cache = new Cache(cache.getDirectory(), Integer.MAX_VALUE, fileSystem);
|
||||
cache = new Cache(cache.directory(), Integer.MAX_VALUE, fileSystem);
|
||||
client = client.newBuilder()
|
||||
.cache(cache)
|
||||
.build();
|
||||
@@ -2089,7 +2089,7 @@ public final class CacheTest {
|
||||
HttpUrl url = server.url("/");
|
||||
assertEquals("A", get(url).body().string());
|
||||
client.cache().evictAll();
|
||||
assertEquals(0, client.cache().getSize());
|
||||
assertEquals(0, client.cache().size());
|
||||
assertEquals("B", get(url).body().string());
|
||||
}
|
||||
|
||||
|
||||
@@ -52,27 +52,27 @@ public final class ConnectionPoolTest {
|
||||
|
||||
// Running at time 50, the pool returns that nothing can be evicted until time 150.
|
||||
assertEquals(100L, pool.cleanup(50L));
|
||||
assertEquals(1, pool.getConnectionCount());
|
||||
assertEquals(1, pool.connectionCount());
|
||||
assertFalse(c1.socket.isClosed());
|
||||
|
||||
// Running at time 60, the pool returns that nothing can be evicted until time 150.
|
||||
assertEquals(90L, pool.cleanup(60L));
|
||||
assertEquals(1, pool.getConnectionCount());
|
||||
assertEquals(1, pool.connectionCount());
|
||||
assertFalse(c1.socket.isClosed());
|
||||
|
||||
// Running at time 149, the pool returns that nothing can be evicted until time 150.
|
||||
assertEquals(1L, pool.cleanup(149L));
|
||||
assertEquals(1, pool.getConnectionCount());
|
||||
assertEquals(1, pool.connectionCount());
|
||||
assertFalse(c1.socket.isClosed());
|
||||
|
||||
// Running at time 150, the pool evicts.
|
||||
assertEquals(0, pool.cleanup(150L));
|
||||
assertEquals(0, pool.getConnectionCount());
|
||||
assertEquals(0, pool.connectionCount());
|
||||
assertTrue(c1.socket.isClosed());
|
||||
|
||||
// Running again, the pool reports that no further runs are necessary.
|
||||
assertEquals(-1, pool.cleanup(150L));
|
||||
assertEquals(0, pool.getConnectionCount());
|
||||
assertEquals(0, pool.connectionCount());
|
||||
assertTrue(c1.socket.isClosed());
|
||||
}
|
||||
|
||||
@@ -86,17 +86,17 @@ public final class ConnectionPoolTest {
|
||||
|
||||
// Running at time 50, the pool returns that nothing can be evicted until time 150.
|
||||
assertEquals(100L, pool.cleanup(50L));
|
||||
assertEquals(1, pool.getConnectionCount());
|
||||
assertEquals(1, pool.connectionCount());
|
||||
assertFalse(c1.socket.isClosed());
|
||||
|
||||
// Running at time 60, the pool returns that nothing can be evicted until time 160.
|
||||
assertEquals(100L, pool.cleanup(60L));
|
||||
assertEquals(1, pool.getConnectionCount());
|
||||
assertEquals(1, pool.connectionCount());
|
||||
assertFalse(c1.socket.isClosed());
|
||||
|
||||
// Running at time 160, the pool returns that nothing can be evicted until time 260.
|
||||
assertEquals(100L, pool.cleanup(160L));
|
||||
assertEquals(1, pool.getConnectionCount());
|
||||
assertEquals(1, pool.connectionCount());
|
||||
assertFalse(c1.socket.isClosed());
|
||||
}
|
||||
|
||||
@@ -109,25 +109,25 @@ public final class ConnectionPoolTest {
|
||||
|
||||
// Running at time 75, the pool returns that nothing can be evicted until time 150.
|
||||
assertEquals(75L, pool.cleanup(75L));
|
||||
assertEquals(2, pool.getConnectionCount());
|
||||
assertEquals(2, pool.connectionCount());
|
||||
|
||||
// Running at time 149, the pool returns that nothing can be evicted until time 150.
|
||||
assertEquals(1L, pool.cleanup(149L));
|
||||
assertEquals(2, pool.getConnectionCount());
|
||||
assertEquals(2, pool.connectionCount());
|
||||
|
||||
// Running at time 150, the pool evicts c2.
|
||||
assertEquals(0L, pool.cleanup(150L));
|
||||
assertEquals(1, pool.getConnectionCount());
|
||||
assertEquals(1, pool.connectionCount());
|
||||
assertFalse(c1.socket.isClosed());
|
||||
assertTrue(c2.socket.isClosed());
|
||||
|
||||
// Running at time 150, the pool returns that nothing can be evicted until time 175.
|
||||
assertEquals(25L, pool.cleanup(150L));
|
||||
assertEquals(1, pool.getConnectionCount());
|
||||
assertEquals(1, pool.connectionCount());
|
||||
|
||||
// Running at time 175, the pool evicts c1.
|
||||
assertEquals(0L, pool.cleanup(175L));
|
||||
assertEquals(0, pool.getConnectionCount());
|
||||
assertEquals(0, pool.connectionCount());
|
||||
assertTrue(c1.socket.isClosed());
|
||||
assertTrue(c2.socket.isClosed());
|
||||
}
|
||||
@@ -141,7 +141,7 @@ public final class ConnectionPoolTest {
|
||||
|
||||
// With 2 connections, there's no need to evict until the connections time out.
|
||||
assertEquals(50L, pool.cleanup(100L));
|
||||
assertEquals(2, pool.getConnectionCount());
|
||||
assertEquals(2, pool.connectionCount());
|
||||
assertFalse(c1.socket.isClosed());
|
||||
assertFalse(c2.socket.isClosed());
|
||||
|
||||
@@ -150,7 +150,7 @@ public final class ConnectionPoolTest {
|
||||
|
||||
// The third connection bounces the first.
|
||||
assertEquals(0L, pool.cleanup(100L));
|
||||
assertEquals(2, pool.getConnectionCount());
|
||||
assertEquals(2, pool.connectionCount());
|
||||
assertTrue(c1.socket.isClosed());
|
||||
assertFalse(c2.socket.isClosed());
|
||||
assertFalse(c3.socket.isClosed());
|
||||
|
||||
@@ -1356,7 +1356,7 @@ public final class URLConnectionTest {
|
||||
|
||||
HttpURLConnection connection = urlFactory.open(server.url("/").url());
|
||||
assertContent("{}", connection);
|
||||
assertEquals(0, urlFactory.client().connectionPool().getIdleConnectionCount());
|
||||
assertEquals(0, urlFactory.client().connectionPool().idleConnectionCount());
|
||||
}
|
||||
|
||||
@Test public void earlyDisconnectDoesntHarmPoolingWithChunkedEncoding() throws Exception {
|
||||
|
||||
@@ -330,14 +330,14 @@ public abstract class HttpOverSpdyTest {
|
||||
server.enqueue(new MockResponse().addHeader("cache-control: max-age=60").setBody("A"));
|
||||
|
||||
assertContent("A", urlFactory.open(server.url("/").url()), Integer.MAX_VALUE);
|
||||
assertEquals(1, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(1, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
assertContent("A", urlFactory.open(server.url("/").url()), Integer.MAX_VALUE);
|
||||
assertContent("A", urlFactory.open(server.url("/").url()), Integer.MAX_VALUE);
|
||||
assertEquals(3, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(2, cache.getHitCount());
|
||||
assertEquals(3, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(2, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void conditionalCache() throws IOException {
|
||||
@@ -349,13 +349,13 @@ public abstract class HttpOverSpdyTest {
|
||||
server.enqueue(new MockResponse().setResponseCode(HttpURLConnection.HTTP_NOT_MODIFIED));
|
||||
|
||||
assertContent("A", urlFactory.open(server.url("/").url()), Integer.MAX_VALUE);
|
||||
assertEquals(1, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(1, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
assertContent("A", urlFactory.open(server.url("/").url()), Integer.MAX_VALUE);
|
||||
assertEquals(2, cache.getRequestCount());
|
||||
assertEquals(2, cache.getNetworkCount());
|
||||
assertEquals(1, cache.getHitCount());
|
||||
assertEquals(2, cache.requestCount());
|
||||
assertEquals(2, cache.networkCount());
|
||||
assertEquals(1, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void responseCachedWithoutConsumingFullBody() throws IOException {
|
||||
@@ -422,7 +422,7 @@ public abstract class HttpOverSpdyTest {
|
||||
connection1.disconnect();
|
||||
|
||||
// That connection is pooled, and it works.
|
||||
assertEquals(1, urlFactory.client().connectionPool().getMultiplexedConnectionCount());
|
||||
assertEquals(1, urlFactory.client().connectionPool().connectionCount());
|
||||
HttpURLConnection connection2 = urlFactory.open(server.url("/").url());
|
||||
assertContent("abc", connection2, 3);
|
||||
assertEquals(0, server.takeRequest().getSequenceNumber());
|
||||
|
||||
@@ -226,8 +226,8 @@ public final class UrlConnectionCacheTest {
|
||||
assertEquals("spiders", readAscii(urlConnection, "spiders".length()));
|
||||
assertEquals(-1, in.read());
|
||||
in.close();
|
||||
assertEquals(1, cache.getWriteSuccessCount());
|
||||
assertEquals(0, cache.getWriteAbortCount());
|
||||
assertEquals(1, cache.writeSuccessCount());
|
||||
assertEquals(0, cache.writeAbortCount());
|
||||
|
||||
urlConnection = urlFactory.open(server.url("/").url()); // cached!
|
||||
in = urlConnection.getInputStream();
|
||||
@@ -238,10 +238,10 @@ public final class UrlConnectionCacheTest {
|
||||
|
||||
assertEquals(-1, in.read());
|
||||
in.close();
|
||||
assertEquals(1, cache.getWriteSuccessCount());
|
||||
assertEquals(0, cache.getWriteAbortCount());
|
||||
assertEquals(2, cache.getRequestCount());
|
||||
assertEquals(1, cache.getHitCount());
|
||||
assertEquals(1, cache.writeSuccessCount());
|
||||
assertEquals(0, cache.writeAbortCount());
|
||||
assertEquals(2, cache.requestCount());
|
||||
assertEquals(1, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void secureResponseCaching() throws IOException {
|
||||
@@ -267,9 +267,9 @@ public final class UrlConnectionCacheTest {
|
||||
c2.setHostnameVerifier(NULL_HOSTNAME_VERIFIER);
|
||||
assertEquals("ABC", readAscii(c2));
|
||||
|
||||
assertEquals(2, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(1, cache.getHitCount());
|
||||
assertEquals(2, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(1, cache.hitCount());
|
||||
|
||||
assertEquals(suite, c2.getCipherSuite());
|
||||
assertEquals(localCerts, toListOrNull(c2.getLocalCertificates()));
|
||||
@@ -294,9 +294,9 @@ public final class UrlConnectionCacheTest {
|
||||
connection = urlFactory.open(server.url("/").url()); // cached!
|
||||
assertEquals("ABC", readAscii(connection));
|
||||
|
||||
assertEquals(4, cache.getRequestCount()); // 2 requests + 2 redirects
|
||||
assertEquals(2, cache.getNetworkCount());
|
||||
assertEquals(2, cache.getHitCount());
|
||||
assertEquals(4, cache.requestCount()); // 2 requests + 2 redirects
|
||||
assertEquals(2, cache.networkCount());
|
||||
assertEquals(2, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void redirectToCachedResult() throws Exception {
|
||||
@@ -347,8 +347,8 @@ public final class UrlConnectionCacheTest {
|
||||
assertEquals("ABC", readAscii(connection2));
|
||||
assertNotNull(connection2.getCipherSuite());
|
||||
|
||||
assertEquals(4, cache.getRequestCount()); // 2 direct + 2 redirect = 4
|
||||
assertEquals(2, cache.getHitCount());
|
||||
assertEquals(4, cache.requestCount()); // 2 direct + 2 redirect = 4
|
||||
assertEquals(2, cache.hitCount());
|
||||
assertEquals(connection1.getCipherSuite(), connection2.getCipherSuite());
|
||||
}
|
||||
|
||||
@@ -383,8 +383,8 @@ public final class UrlConnectionCacheTest {
|
||||
HttpURLConnection connection2 = urlFactory.open(server.url("/").url());
|
||||
assertEquals("ABC", readAscii(connection2));
|
||||
|
||||
assertEquals(4, cache.getRequestCount()); // 2 direct + 2 redirect = 4
|
||||
assertEquals(2, cache.getHitCount());
|
||||
assertEquals(4, cache.requestCount()); // 2 direct + 2 redirect = 4
|
||||
assertEquals(2, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void serverDisconnectsPrematurelyWithContentLengthHeader() throws IOException {
|
||||
@@ -418,12 +418,12 @@ public final class UrlConnectionCacheTest {
|
||||
reader.close();
|
||||
}
|
||||
|
||||
assertEquals(1, cache.getWriteAbortCount());
|
||||
assertEquals(0, cache.getWriteSuccessCount());
|
||||
assertEquals(1, cache.writeAbortCount());
|
||||
assertEquals(0, cache.writeSuccessCount());
|
||||
URLConnection connection = urlFactory.open(server.url("/").url());
|
||||
assertEquals("Request #2", readAscii(connection));
|
||||
assertEquals(1, cache.getWriteAbortCount());
|
||||
assertEquals(1, cache.getWriteSuccessCount());
|
||||
assertEquals(1, cache.writeAbortCount());
|
||||
assertEquals(1, cache.writeSuccessCount());
|
||||
}
|
||||
|
||||
@Test public void clientPrematureDisconnectWithContentLengthHeader() throws IOException {
|
||||
@@ -455,12 +455,12 @@ public final class UrlConnectionCacheTest {
|
||||
} catch (IOException expected) {
|
||||
}
|
||||
|
||||
assertEquals(1, cache.getWriteAbortCount());
|
||||
assertEquals(0, cache.getWriteSuccessCount());
|
||||
assertEquals(1, cache.writeAbortCount());
|
||||
assertEquals(0, cache.writeSuccessCount());
|
||||
connection = urlFactory.open(server.url("/").url());
|
||||
assertEquals("Request #2", readAscii(connection));
|
||||
assertEquals(1, cache.getWriteAbortCount());
|
||||
assertEquals(1, cache.getWriteSuccessCount());
|
||||
assertEquals(1, cache.writeAbortCount());
|
||||
assertEquals(1, cache.writeSuccessCount());
|
||||
}
|
||||
|
||||
@Test public void defaultExpirationDateFullyCachedForLessThan24Hours() throws Exception {
|
||||
@@ -853,7 +853,7 @@ public final class UrlConnectionCacheTest {
|
||||
|
||||
assertEquals("A", readAscii(urlFactory.open(server.url("/").url())));
|
||||
assertEquals("A", readAscii(urlFactory.open(server.url("/").url())));
|
||||
assertEquals(1, urlFactory.client().connectionPool().getIdleConnectionCount());
|
||||
assertEquals(1, urlFactory.client().connectionPool().idleConnectionCount());
|
||||
}
|
||||
|
||||
@Test public void expiresDateBeforeModifiedDate() throws Exception {
|
||||
@@ -923,9 +923,9 @@ public final class UrlConnectionCacheTest {
|
||||
HttpURLConnection connection = urlFactory.open(server.url("/").url());
|
||||
connection.addRequestProperty("Cache-Control", "only-if-cached");
|
||||
assertGatewayTimeout(connection);
|
||||
assertEquals(1, cache.getRequestCount());
|
||||
assertEquals(0, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(1, cache.requestCount());
|
||||
assertEquals(0, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void requestOnlyIfCachedWithFullResponseCached() throws IOException {
|
||||
@@ -937,9 +937,9 @@ public final class UrlConnectionCacheTest {
|
||||
URLConnection connection = urlFactory.open(server.url("/").url());
|
||||
connection.addRequestProperty("Cache-Control", "only-if-cached");
|
||||
assertEquals("A", readAscii(connection));
|
||||
assertEquals(2, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(1, cache.getHitCount());
|
||||
assertEquals(2, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(1, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void requestOnlyIfCachedWithConditionalResponseCached() throws IOException {
|
||||
@@ -951,9 +951,9 @@ public final class UrlConnectionCacheTest {
|
||||
HttpURLConnection connection = urlFactory.open(server.url("/").url());
|
||||
connection.addRequestProperty("Cache-Control", "only-if-cached");
|
||||
assertGatewayTimeout(connection);
|
||||
assertEquals(2, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(2, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void requestOnlyIfCachedWithUnhelpfulResponseCached() throws IOException {
|
||||
@@ -963,9 +963,9 @@ public final class UrlConnectionCacheTest {
|
||||
HttpURLConnection connection = urlFactory.open(server.url("/").url());
|
||||
connection.addRequestProperty("Cache-Control", "only-if-cached");
|
||||
assertGatewayTimeout(connection);
|
||||
assertEquals(2, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(2, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void requestCacheControlNoCache() throws Exception {
|
||||
@@ -1179,14 +1179,14 @@ public final class UrlConnectionCacheTest {
|
||||
server.enqueue(new MockResponse().setBody("C"));
|
||||
|
||||
assertEquals("A", readAscii(urlFactory.open(server.url("/").url())));
|
||||
assertEquals(1, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(1, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
assertEquals("B", readAscii(urlFactory.open(server.url("/").url())));
|
||||
assertEquals("C", readAscii(urlFactory.open(server.url("/").url())));
|
||||
assertEquals(3, cache.getRequestCount());
|
||||
assertEquals(3, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(3, cache.requestCount());
|
||||
assertEquals(3, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void statisticsConditionalCacheHit() throws Exception {
|
||||
@@ -1197,28 +1197,28 @@ public final class UrlConnectionCacheTest {
|
||||
server.enqueue(new MockResponse().setResponseCode(HttpURLConnection.HTTP_NOT_MODIFIED));
|
||||
|
||||
assertEquals("A", readAscii(urlFactory.open(server.url("/").url())));
|
||||
assertEquals(1, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(1, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
assertEquals("A", readAscii(urlFactory.open(server.url("/").url())));
|
||||
assertEquals("A", readAscii(urlFactory.open(server.url("/").url())));
|
||||
assertEquals(3, cache.getRequestCount());
|
||||
assertEquals(3, cache.getNetworkCount());
|
||||
assertEquals(2, cache.getHitCount());
|
||||
assertEquals(3, cache.requestCount());
|
||||
assertEquals(3, cache.networkCount());
|
||||
assertEquals(2, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void statisticsFullCacheHit() throws Exception {
|
||||
server.enqueue(new MockResponse().addHeader("Cache-Control: max-age=60").setBody("A"));
|
||||
|
||||
assertEquals("A", readAscii(urlFactory.open(server.url("/").url())));
|
||||
assertEquals(1, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(0, cache.getHitCount());
|
||||
assertEquals(1, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(0, cache.hitCount());
|
||||
assertEquals("A", readAscii(urlFactory.open(server.url("/").url())));
|
||||
assertEquals("A", readAscii(urlFactory.open(server.url("/").url())));
|
||||
assertEquals(3, cache.getRequestCount());
|
||||
assertEquals(1, cache.getNetworkCount());
|
||||
assertEquals(2, cache.getHitCount());
|
||||
assertEquals(3, cache.requestCount());
|
||||
assertEquals(1, cache.networkCount());
|
||||
assertEquals(2, cache.hitCount());
|
||||
}
|
||||
|
||||
@Test public void varyMatchesChangedRequestHeaderField() throws Exception {
|
||||
@@ -1632,10 +1632,10 @@ public final class UrlConnectionCacheTest {
|
||||
+ "2\n"
|
||||
+ "\n"
|
||||
+ "CLEAN " + urlKey + " " + entryMetadata.length() + " " + entryBody.length() + "\n";
|
||||
writeFile(cache.getDirectory(), urlKey + ".0", entryMetadata);
|
||||
writeFile(cache.getDirectory(), urlKey + ".1", entryBody);
|
||||
writeFile(cache.getDirectory(), "journal", journalBody);
|
||||
cache = new Cache(cache.getDirectory(), Integer.MAX_VALUE, fileSystem);
|
||||
writeFile(cache.directory(), urlKey + ".0", entryMetadata);
|
||||
writeFile(cache.directory(), urlKey + ".1", entryBody);
|
||||
writeFile(cache.directory(), "journal", journalBody);
|
||||
cache = new Cache(cache.directory(), Integer.MAX_VALUE, fileSystem);
|
||||
urlFactory.setClient(urlFactory.client().newBuilder()
|
||||
.cache(cache)
|
||||
.build());
|
||||
|
||||
@@ -63,7 +63,7 @@ public final class AutobahnTester {
|
||||
|
||||
updateReports();
|
||||
} finally {
|
||||
client.dispatcher().getExecutorService().shutdown();
|
||||
client.dispatcher().executorService().shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -54,11 +54,11 @@ import okio.Source;
|
||||
*
|
||||
* <p>To measure cache effectiveness, this class tracks three statistics:
|
||||
* <ul>
|
||||
* <li><strong>{@linkplain #getRequestCount() Request Count:}</strong> the number of HTTP
|
||||
* <li><strong>{@linkplain #requestCount() Request Count:}</strong> the number of HTTP
|
||||
* requests issued since this cache was created.
|
||||
* <li><strong>{@linkplain #getNetworkCount() Network Count:}</strong> the number of those
|
||||
* <li><strong>{@linkplain #networkCount() Network Count:}</strong> the number of those
|
||||
* requests that required network use.
|
||||
* <li><strong>{@linkplain #getHitCount() Hit Count:}</strong> the number of those requests
|
||||
* <li><strong>{@linkplain #hitCount() Hit Count:}</strong> the number of those requests
|
||||
* whose responses were served by the cache.
|
||||
* </ul>
|
||||
*
|
||||
@@ -364,19 +364,19 @@ public final class Cache {
|
||||
};
|
||||
}
|
||||
|
||||
public synchronized int getWriteAbortCount() {
|
||||
public synchronized int writeAbortCount() {
|
||||
return writeAbortCount;
|
||||
}
|
||||
|
||||
public synchronized int getWriteSuccessCount() {
|
||||
public synchronized int writeSuccessCount() {
|
||||
return writeSuccessCount;
|
||||
}
|
||||
|
||||
public long getSize() throws IOException {
|
||||
public long size() throws IOException {
|
||||
return cache.size();
|
||||
}
|
||||
|
||||
public long getMaxSize() {
|
||||
public long maxSize() {
|
||||
return cache.getMaxSize();
|
||||
}
|
||||
|
||||
@@ -388,7 +388,7 @@ public final class Cache {
|
||||
cache.close();
|
||||
}
|
||||
|
||||
public File getDirectory() {
|
||||
public File directory() {
|
||||
return cache.getDirectory();
|
||||
}
|
||||
|
||||
@@ -412,15 +412,15 @@ public final class Cache {
|
||||
hitCount++;
|
||||
}
|
||||
|
||||
public synchronized int getNetworkCount() {
|
||||
public synchronized int networkCount() {
|
||||
return networkCount;
|
||||
}
|
||||
|
||||
public synchronized int getHitCount() {
|
||||
public synchronized int hitCount() {
|
||||
return hitCount;
|
||||
}
|
||||
|
||||
public synchronized int getRequestCount() {
|
||||
public synchronized int requestCount() {
|
||||
return requestCount;
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ public final class ConnectionPool {
|
||||
}
|
||||
|
||||
/** Returns the number of idle connections in the pool. */
|
||||
public synchronized int getIdleConnectionCount() {
|
||||
public synchronized int idleConnectionCount() {
|
||||
int total = 0;
|
||||
for (RealConnection connection : connections) {
|
||||
if (connection.allocations.isEmpty()) total++;
|
||||
@@ -105,28 +105,14 @@ public final class ConnectionPool {
|
||||
|
||||
/**
|
||||
* Returns total number of connections in the pool. Note that prior to OkHttp 2.7 this included
|
||||
* only idle connections and SPDY connections. In OkHttp 2.7 this includes all connections, both
|
||||
* active and inactive. Use {@link #getIdleConnectionCount()} to count connections not currently
|
||||
* only idle connections and SPDY connections. Since OkHttp 2.7 this includes all connections,
|
||||
* both active and inactive. Use {@link #idleConnectionCount()} to count connections not currently
|
||||
* in use.
|
||||
*/
|
||||
public synchronized int getConnectionCount() {
|
||||
public synchronized int connectionCount() {
|
||||
return connections.size();
|
||||
}
|
||||
|
||||
/** Returns total number of multiplexed connections in the pool. */
|
||||
public synchronized int getMultiplexedConnectionCount() {
|
||||
int total = 0;
|
||||
for (RealConnection connection : connections) {
|
||||
if (connection.isMultiplexed()) total++;
|
||||
}
|
||||
return total;
|
||||
}
|
||||
|
||||
/** Returns total number of http connections in the pool. */
|
||||
public synchronized int getHttpConnectionCount() {
|
||||
return connections.size() - getMultiplexedConnectionCount();
|
||||
}
|
||||
|
||||
/** Returns a recycled connection to {@code address}, or null if no such connection exists. */
|
||||
RealConnection get(Address address, StreamAllocation streamAllocation) {
|
||||
assert (Thread.holdsLock(this));
|
||||
|
||||
@@ -58,7 +58,7 @@ public final class Dispatcher {
|
||||
public Dispatcher() {
|
||||
}
|
||||
|
||||
public synchronized ExecutorService getExecutorService() {
|
||||
public synchronized ExecutorService executorService() {
|
||||
if (executorService == null) {
|
||||
executorService = new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60, TimeUnit.SECONDS,
|
||||
new SynchronousQueue<Runnable>(), Util.threadFactory("OkHttp Dispatcher", false));
|
||||
@@ -109,7 +109,7 @@ public final class Dispatcher {
|
||||
synchronized void enqueue(AsyncCall call) {
|
||||
if (runningAsyncCalls.size() < maxRequests && runningCallsForHost(call) < maxRequestsPerHost) {
|
||||
runningAsyncCalls.add(call);
|
||||
getExecutorService().execute(call);
|
||||
executorService().execute(call);
|
||||
} else {
|
||||
readyAsyncCalls.add(call);
|
||||
}
|
||||
@@ -149,7 +149,7 @@ public final class Dispatcher {
|
||||
if (runningCallsForHost(call) < maxRequestsPerHost) {
|
||||
i.remove();
|
||||
runningAsyncCalls.add(call);
|
||||
getExecutorService().execute(call);
|
||||
executorService().execute(call);
|
||||
}
|
||||
|
||||
if (runningAsyncCalls.size() >= maxRequests) return; // Reached max capacity.
|
||||
|
||||
@@ -29,7 +29,7 @@ public final class WebSocketEcho implements WebSocketListener {
|
||||
WebSocketCall.create(client, request).enqueue(this);
|
||||
|
||||
// Trigger shutdown of the dispatcher's executor so this process can exit cleanly.
|
||||
client.dispatcher().getExecutorService().shutdown();
|
||||
client.dispatcher().executorService().shutdown();
|
||||
}
|
||||
|
||||
@Override public void onOpen(final WebSocket webSocket, Response response) {
|
||||
|
||||
Reference in New Issue
Block a user