|
@@ -15,6 +15,7 @@ import kotlinx.coroutines.sync.Mutex
|
|
|
import kotlinx.coroutines.sync.withLock
|
|
import kotlinx.coroutines.sync.withLock
|
|
|
import net.mamoe.mirai.internal.QQAndroidBot
|
|
import net.mamoe.mirai.internal.QQAndroidBot
|
|
|
import net.mamoe.mirai.internal.network.handler.NetworkHandler
|
|
import net.mamoe.mirai.internal.network.handler.NetworkHandler
|
|
|
|
|
+import net.mamoe.mirai.internal.network.handler.NetworkHandler.State.*
|
|
|
import net.mamoe.mirai.internal.network.handler.NetworkHandlerContext
|
|
import net.mamoe.mirai.internal.network.handler.NetworkHandlerContext
|
|
|
import net.mamoe.mirai.internal.network.handler.NetworkHandlerSupport
|
|
import net.mamoe.mirai.internal.network.handler.NetworkHandlerSupport
|
|
|
import net.mamoe.mirai.internal.network.handler.logger
|
|
import net.mamoe.mirai.internal.network.handler.logger
|
|
@@ -32,7 +33,7 @@ internal open class TestNetworkHandler(
|
|
|
class Connection
|
|
class Connection
|
|
|
|
|
|
|
|
@Suppress("EXPOSED_SUPER_CLASS")
|
|
@Suppress("EXPOSED_SUPER_CLASS")
|
|
|
- internal open inner class TestState(
|
|
|
|
|
|
|
+ internal abstract inner class TestState(
|
|
|
correspondingState: NetworkHandler.State
|
|
correspondingState: NetworkHandler.State
|
|
|
) : BaseStateImpl(correspondingState) {
|
|
) : BaseStateImpl(correspondingState) {
|
|
|
val resumeDeferred = CompletableDeferred<Unit>()
|
|
val resumeDeferred = CompletableDeferred<Unit>()
|
|
@@ -44,8 +45,8 @@ internal open class TestNetworkHandler(
|
|
|
resumeCount.incrementAndGet()
|
|
resumeCount.incrementAndGet()
|
|
|
resumeDeferred.complete(Unit)
|
|
resumeDeferred.complete(Unit)
|
|
|
when (this.correspondingState) {
|
|
when (this.correspondingState) {
|
|
|
- NetworkHandler.State.INITIALIZED -> {
|
|
|
|
|
- setState(NetworkHandler.State.CONNECTING)
|
|
|
|
|
|
|
+ INITIALIZED -> {
|
|
|
|
|
+ setState(CONNECTING)
|
|
|
}
|
|
}
|
|
|
else -> {
|
|
else -> {
|
|
|
}
|
|
}
|
|
@@ -57,13 +58,26 @@ internal open class TestNetworkHandler(
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ internal inner class TestStateInitial : TestState(INITIALIZED)
|
|
|
|
|
+ internal inner class TestStateConnecting : TestState(CONNECTING)
|
|
|
|
|
+ internal inner class TestStateLoading : TestState(LOADING)
|
|
|
|
|
+ internal inner class TestStateOK : TestState(OK)
|
|
|
|
|
+ internal inner class TestStateClosed : TestState(CLOSED)
|
|
|
|
|
+
|
|
|
@OptIn(TestOnly::class)
|
|
@OptIn(TestOnly::class)
|
|
|
fun setState(correspondingState: NetworkHandler.State): TestState? {
|
|
fun setState(correspondingState: NetworkHandler.State): TestState? {
|
|
|
// `null` means ignore checks. All test states have same type TestState.
|
|
// `null` means ignore checks. All test states have same type TestState.
|
|
|
- return setStateImpl(null) { TestState(correspondingState) }
|
|
|
|
|
|
|
+ val state: TestState = when (correspondingState) {
|
|
|
|
|
+ INITIALIZED -> TestStateInitial()
|
|
|
|
|
+ CONNECTING -> TestStateConnecting()
|
|
|
|
|
+ LOADING -> TestStateLoading()
|
|
|
|
|
+ OK -> TestStateOK()
|
|
|
|
|
+ CLOSED -> TestStateClosed()
|
|
|
|
|
+ }
|
|
|
|
|
+ return setStateImpl(TestState::class) { state }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private val initialState = TestState(NetworkHandler.State.INITIALIZED)
|
|
|
|
|
|
|
+ private val initialState = TestStateInitial()
|
|
|
override fun initialState(): BaseStateImpl = initialState
|
|
override fun initialState(): BaseStateImpl = initialState
|
|
|
|
|
|
|
|
val sendPacket get() = ConcurrentLinkedQueue<OutgoingPacket>()
|
|
val sendPacket get() = ConcurrentLinkedQueue<OutgoingPacket>()
|
|
@@ -75,19 +89,19 @@ internal open class TestNetworkHandler(
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun setStateClosed(exception: Throwable?): TestState? {
|
|
override fun setStateClosed(exception: Throwable?): TestState? {
|
|
|
- return setState(NetworkHandler.State.CLOSED)
|
|
|
|
|
|
|
+ return setState(CLOSED)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun setStateConnecting(exception: Throwable?): TestState? {
|
|
override fun setStateConnecting(exception: Throwable?): TestState? {
|
|
|
- return setState(NetworkHandler.State.CONNECTING)
|
|
|
|
|
|
|
+ return setState(CONNECTING)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun setStateOK(conn: Connection, exception: Throwable?): TestState? {
|
|
override fun setStateOK(conn: Connection, exception: Throwable?): TestState? {
|
|
|
exception?.printStackTrace()
|
|
exception?.printStackTrace()
|
|
|
- return setState(NetworkHandler.State.OK)
|
|
|
|
|
|
|
+ return setState(OK)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun setStateLoading(conn: Connection): TestState? {
|
|
override fun setStateLoading(conn: Connection): TestState? {
|
|
|
- return setState(NetworkHandler.State.LOADING)
|
|
|
|
|
|
|
+ return setState(LOADING)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|