diff --git a/okhttp-testing-support/src/main/kotlin/okhttp3/ConnectionEvent.kt b/okhttp-testing-support/src/main/kotlin/okhttp3/ConnectionEvent.kt index 2dded160c..d77e31d15 100644 --- a/okhttp-testing-support/src/main/kotlin/okhttp3/ConnectionEvent.kt +++ b/okhttp-testing-support/src/main/kotlin/okhttp3/ConnectionEvent.kt @@ -13,6 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +@file:Suppress( + "CANNOT_OVERRIDE_INVISIBLE_MEMBER", + "INVISIBLE_MEMBER", + "INVISIBLE_REFERENCE", +) package okhttp3 diff --git a/okhttp-testing-support/src/main/kotlin/okhttp3/OkHttpClientTestRule.kt b/okhttp-testing-support/src/main/kotlin/okhttp3/OkHttpClientTestRule.kt index 82abccdc5..00cc62985 100644 --- a/okhttp-testing-support/src/main/kotlin/okhttp3/OkHttpClientTestRule.kt +++ b/okhttp-testing-support/src/main/kotlin/okhttp3/OkHttpClientTestRule.kt @@ -60,7 +60,7 @@ class OkHttpClientTestRule : private lateinit var testName: String private var defaultUncaughtExceptionHandler: Thread.UncaughtExceptionHandler? = null private var taskQueuesWereIdle: Boolean = false - val connectionListener = RecordingConnectionListener() + private val connectionListener = RecordingConnectionListener() var logger: Logger? = null diff --git a/okhttp-testing-support/src/main/kotlin/okhttp3/RecordingConnectionListener.kt b/okhttp-testing-support/src/main/kotlin/okhttp3/RecordingConnectionListener.kt index 4313db231..3f5ce36c3 100644 --- a/okhttp-testing-support/src/main/kotlin/okhttp3/RecordingConnectionListener.kt +++ b/okhttp-testing-support/src/main/kotlin/okhttp3/RecordingConnectionListener.kt @@ -13,6 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +@file:Suppress( + "CANNOT_OVERRIDE_INVISIBLE_MEMBER", + "INVISIBLE_MEMBER", + "INVISIBLE_REFERENCE", +) + package okhttp3 import assertk.assertThat @@ -24,11 +30,12 @@ import java.util.Deque import java.util.concurrent.ConcurrentLinkedDeque import java.util.concurrent.TimeUnit import okhttp3.ConnectionEvent.NoNewExchanges +import okhttp3.internal.connection.ConnectionListener import okhttp3.internal.connection.RealConnection import okio.IOException import org.junit.jupiter.api.Assertions -open class RecordingConnectionListener( +internal open class RecordingConnectionListener( /** * An override to ignore the normal order that is enforced. * EventListeners added by Interceptors will not see all events. diff --git a/okhttp-testing-support/src/main/kotlin/okhttp3/TestValueFactory.kt b/okhttp-testing-support/src/main/kotlin/okhttp3/TestValueFactory.kt index a484d479a..6d2e4c9e1 100644 --- a/okhttp-testing-support/src/main/kotlin/okhttp3/TestValueFactory.kt +++ b/okhttp-testing-support/src/main/kotlin/okhttp3/TestValueFactory.kt @@ -36,6 +36,7 @@ import okhttp3.internal.concurrent.TaskFaker import okhttp3.internal.concurrent.TaskRunner import okhttp3.internal.concurrent.withLock import okhttp3.internal.connection.CallConnectionUser +import okhttp3.internal.connection.ConnectionListener import okhttp3.internal.connection.FastFallbackExchangeFinder import okhttp3.internal.connection.RealCall import okhttp3.internal.connection.RealConnection diff --git a/okhttp-testing-support/src/main/kotlin/okhttp3/internal/http2/Http2FlowControlConnectionListener.kt b/okhttp-testing-support/src/main/kotlin/okhttp3/internal/http2/Http2FlowControlConnectionListener.kt deleted file mode 100644 index e60a3e67a..000000000 --- a/okhttp-testing-support/src/main/kotlin/okhttp3/internal/http2/Http2FlowControlConnectionListener.kt +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2023 Block, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package okhttp3.internal.http2 - -import okhttp3.ConnectionListener -import okhttp3.internal.http2.flowcontrol.WindowCounter - -/** - * ConnectionListener that outputs CSV for flow control of client receiving streams. - */ -class Http2FlowControlConnectionListener : - ConnectionListener(), - FlowControlListener { - val start = System.currentTimeMillis() - - override fun receivingStreamWindowChanged( - streamId: Int, - windowCounter: WindowCounter, - bufferSize: Long, - ) { - println("${System.currentTimeMillis() - start},$streamId,${windowCounter.unacknowledged},$bufferSize") - } - - override fun receivingConnectionWindowChanged(windowCounter: WindowCounter) { - println("${System.currentTimeMillis() - start},0,${windowCounter.unacknowledged},") - } -} diff --git a/okhttp/api/android/okhttp.api b/okhttp/api/android/okhttp.api index 355bb5d27..28913fee9 100644 --- a/okhttp/api/android/okhttp.api +++ b/okhttp/api/android/okhttp.api @@ -333,27 +333,9 @@ public abstract interface class okhttp3/Connection { public abstract fun socket ()Ljava/net/Socket; } -public abstract class okhttp3/ConnectionListener { - public static final field Companion Lokhttp3/ConnectionListener$Companion; - public fun ()V - public fun connectEnd (Lokhttp3/Connection;Lokhttp3/Route;Lokhttp3/Call;)V - public fun connectFailed (Lokhttp3/Route;Lokhttp3/Call;Ljava/io/IOException;)V - public fun connectStart (Lokhttp3/Route;Lokhttp3/Call;)V - public fun connectionAcquired (Lokhttp3/Connection;Lokhttp3/Call;)V - public fun connectionClosed (Lokhttp3/Connection;)V - public fun connectionReleased (Lokhttp3/Connection;Lokhttp3/Call;)V - public fun noNewExchanges (Lokhttp3/Connection;)V -} - -public final class okhttp3/ConnectionListener$Companion { - public final fun getNONE ()Lokhttp3/ConnectionListener; -} - public final class okhttp3/ConnectionPool { public fun ()V public fun (IJLjava/util/concurrent/TimeUnit;)V - public fun (IJLjava/util/concurrent/TimeUnit;Lokhttp3/ConnectionListener;)V - public synthetic fun (IJLjava/util/concurrent/TimeUnit;Lokhttp3/ConnectionListener;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun connectionCount ()I public final fun evictAll ()V public final fun idleConnectionCount ()I diff --git a/okhttp/api/jvm/okhttp.api b/okhttp/api/jvm/okhttp.api index 355bb5d27..28913fee9 100644 --- a/okhttp/api/jvm/okhttp.api +++ b/okhttp/api/jvm/okhttp.api @@ -333,27 +333,9 @@ public abstract interface class okhttp3/Connection { public abstract fun socket ()Ljava/net/Socket; } -public abstract class okhttp3/ConnectionListener { - public static final field Companion Lokhttp3/ConnectionListener$Companion; - public fun ()V - public fun connectEnd (Lokhttp3/Connection;Lokhttp3/Route;Lokhttp3/Call;)V - public fun connectFailed (Lokhttp3/Route;Lokhttp3/Call;Ljava/io/IOException;)V - public fun connectStart (Lokhttp3/Route;Lokhttp3/Call;)V - public fun connectionAcquired (Lokhttp3/Connection;Lokhttp3/Call;)V - public fun connectionClosed (Lokhttp3/Connection;)V - public fun connectionReleased (Lokhttp3/Connection;Lokhttp3/Call;)V - public fun noNewExchanges (Lokhttp3/Connection;)V -} - -public final class okhttp3/ConnectionListener$Companion { - public final fun getNONE ()Lokhttp3/ConnectionListener; -} - public final class okhttp3/ConnectionPool { public fun ()V public fun (IJLjava/util/concurrent/TimeUnit;)V - public fun (IJLjava/util/concurrent/TimeUnit;Lokhttp3/ConnectionListener;)V - public synthetic fun (IJLjava/util/concurrent/TimeUnit;Lokhttp3/ConnectionListener;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun connectionCount ()I public final fun evictAll ()V public final fun idleConnectionCount ()I diff --git a/okhttp/src/commonJvmAndroid/kotlin/okhttp3/ConnectionPool.kt b/okhttp/src/commonJvmAndroid/kotlin/okhttp3/ConnectionPool.kt index 34af096c8..f787f8632 100644 --- a/okhttp/src/commonJvmAndroid/kotlin/okhttp3/ConnectionPool.kt +++ b/okhttp/src/commonJvmAndroid/kotlin/okhttp3/ConnectionPool.kt @@ -18,6 +18,7 @@ package okhttp3 import java.util.concurrent.TimeUnit import okhttp3.internal.concurrent.TaskRunner +import okhttp3.internal.connection.ConnectionListener import okhttp3.internal.connection.FastFallbackExchangeFinder import okhttp3.internal.connection.ForceConnectRoutePlanner import okhttp3.internal.connection.RealConnectionPool @@ -82,9 +83,8 @@ class ConnectionPool internal constructor( ), ) - // Public API - @ExperimentalOkHttpApi - constructor( + // Internal until we promote ConnectionListener to be a public API. + internal constructor( maxIdleConnections: Int = 5, keepAliveDuration: Long = 5, timeUnit: TimeUnit = TimeUnit.MINUTES, diff --git a/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/connection/CallConnectionUser.kt b/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/connection/CallConnectionUser.kt index 25de3b72a..5f2c7a315 100644 --- a/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/connection/CallConnectionUser.kt +++ b/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/connection/CallConnectionUser.kt @@ -20,7 +20,6 @@ import java.net.InetAddress import java.net.Proxy import java.net.Socket import okhttp3.Connection -import okhttp3.ConnectionListener import okhttp3.EventListener import okhttp3.Handshake import okhttp3.HttpUrl diff --git a/okhttp/src/commonJvmAndroid/kotlin/okhttp3/ConnectionListener.kt b/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/connection/ConnectionListener.kt similarity index 93% rename from okhttp/src/commonJvmAndroid/kotlin/okhttp3/ConnectionListener.kt rename to okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/connection/ConnectionListener.kt index 458e5ac4e..015782059 100644 --- a/okhttp/src/commonJvmAndroid/kotlin/okhttp3/ConnectionListener.kt +++ b/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/connection/ConnectionListener.kt @@ -13,8 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package okhttp3 +package okhttp3.internal.connection +import okhttp3.Call +import okhttp3.Connection +import okhttp3.Route import okio.IOException /** @@ -24,8 +27,7 @@ import okio.IOException * attempt to mutate the event parameters, or be reentrant back into the client. * Any IO - writing to files or network should be done asynchronously. */ -@ExperimentalOkHttpApi -abstract class ConnectionListener { +internal abstract class ConnectionListener { /** * Invoked as soon as a call causes a connection to be started. */ @@ -78,7 +80,6 @@ abstract class ConnectionListener { */ open fun noNewExchanges(connection: Connection) {} - @ExperimentalOkHttpApi companion object { val NONE: ConnectionListener = object : ConnectionListener() {} } diff --git a/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/connection/RealConnection.kt b/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/connection/RealConnection.kt index ca3d388de..33d60d015 100644 --- a/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/connection/RealConnection.kt +++ b/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/connection/RealConnection.kt @@ -27,7 +27,6 @@ import javax.net.ssl.SSLPeerUnverifiedException import javax.net.ssl.SSLSocket import okhttp3.Address import okhttp3.Connection -import okhttp3.ConnectionListener import okhttp3.Handshake import okhttp3.HttpUrl import okhttp3.OkHttpClient @@ -67,7 +66,7 @@ import okio.buffer * Connections are shared in a connection pool. Accesses to the connection's state must be guarded * by holding a lock on the connection. */ -class RealConnection( +class RealConnection internal constructor( val taskRunner: TaskRunner, val connectionPool: RealConnectionPool, override val route: Route, diff --git a/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/connection/RealConnectionPool.kt b/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/connection/RealConnectionPool.kt index 9207d6c15..867dea821 100644 --- a/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/connection/RealConnectionPool.kt +++ b/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/connection/RealConnectionPool.kt @@ -22,7 +22,6 @@ import java.util.concurrent.ThreadLocalRandom import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.AtomicReferenceFieldUpdater import okhttp3.Address -import okhttp3.ConnectionListener import okhttp3.ConnectionPool import okhttp3.Route import okhttp3.internal.closeQuietly @@ -36,7 +35,7 @@ import okhttp3.internal.okHttpName import okhttp3.internal.platform.Platform import okio.IOException -class RealConnectionPool( +class RealConnectionPool internal constructor( private val taskRunner: TaskRunner, /** * The maximum number of idle connections across all addresses. diff --git a/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/internal.kt b/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/internal.kt index 1101e8fe0..5a87df07f 100644 --- a/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/internal.kt +++ b/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/internal.kt @@ -24,7 +24,6 @@ import java.nio.charset.Charset import javax.net.ssl.SSLSocket import okhttp3.Cache import okhttp3.CipherSuite -import okhttp3.ConnectionListener import okhttp3.ConnectionPool import okhttp3.ConnectionSpec import okhttp3.Cookie @@ -36,6 +35,7 @@ import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response import okhttp3.internal.concurrent.TaskRunner +import okhttp3.internal.connection.ConnectionListener import okhttp3.internal.connection.RealConnection internal fun parseCookie( diff --git a/okhttp/src/jvmTest/kotlin/okhttp3/ConnectionListenerTest.kt b/okhttp/src/jvmTest/kotlin/okhttp3/ConnectionListenerTest.kt index cc806f745..6ba4f19d0 100644 --- a/okhttp/src/jvmTest/kotlin/okhttp3/ConnectionListenerTest.kt +++ b/okhttp/src/jvmTest/kotlin/okhttp3/ConnectionListenerTest.kt @@ -13,6 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +@file:Suppress( + "CANNOT_OVERRIDE_INVISIBLE_MEMBER", + "INVISIBLE_MEMBER", + "INVISIBLE_REFERENCE", +) + package okhttp3 import assertk.assertThat diff --git a/okhttp/src/jvmTest/kotlin/okhttp3/internal/connection/RouteSelectorTest.kt b/okhttp/src/jvmTest/kotlin/okhttp3/internal/connection/RouteSelectorTest.kt index c16faaa3e..d61136b64 100644 --- a/okhttp/src/jvmTest/kotlin/okhttp3/internal/connection/RouteSelectorTest.kt +++ b/okhttp/src/jvmTest/kotlin/okhttp3/internal/connection/RouteSelectorTest.kt @@ -31,7 +31,6 @@ import java.net.URI import java.net.UnknownHostException import kotlin.test.assertFailsWith import okhttp3.Address -import okhttp3.ConnectionListener import okhttp3.FakeDns import okhttp3.OkHttpClientTestRule import okhttp3.Request