Просмотр исходного кода

Revert "Add `PacketInterceptor`"

This reverts commit 04656d7a
Him188 4 лет назад
Родитель
Сommit
3cc0973edd

+ 0 - 2
mirai-core/src/commonMain/kotlin/QQAndroidBot.kt

@@ -160,10 +160,8 @@ internal open class QQAndroidBot constructor(
         )
         set(ServerList, ServerListImpl(networkLogger.subLogger("ServerList")))
         set(PacketLoggingStrategy, PacketLoggingStrategyImpl(bot))
-        set(PacketInterceptor, PacketInterceptorImpl())
         set(
             PacketHandler, PacketHandlerChain(
-                components,
                 LoggingPacketHandlerAdapter(get(PacketLoggingStrategy), networkLogger),
                 EventBroadcasterPacketHandler(components),
                 CallPacketFactoryPacketHandler(bot)

+ 4 - 87
mirai-core/src/commonMain/kotlin/network/components/PacketHandler.kt

@@ -20,7 +20,6 @@ import net.mamoe.mirai.internal.network.component.ComponentStorage
 import net.mamoe.mirai.internal.network.protocol.packet.*
 import net.mamoe.mirai.utils.MiraiLogger
 import net.mamoe.mirai.utils.cast
-import java.util.concurrent.ConcurrentLinkedDeque
 import kotlin.coroutines.cancellation.CancellationException
 
 internal interface PacketHandler {
@@ -30,29 +29,15 @@ internal interface PacketHandler {
 }
 
 internal class PacketHandlerChain(
-    private val components: ComponentStorage = ComponentStorage.EMPTY,
     private val instances: Collection<PacketHandler>
 ) : PacketHandler {
-
-    constructor(
-        components: ComponentStorage = ComponentStorage.EMPTY,
-        vararg instances: PacketHandler?,
-    ) : this(components, instances.filterNotNull())
-
-    constructor(
-        components: ComponentStorage = ComponentStorage.EMPTY,
-        instances: Iterable<PacketHandler?>,
-    ) : this(components, instances.filterNotNull())
-
-    private val interceptor: PacketInterceptor by lazy {
-        components.getOrNull(PacketInterceptor) ?: PacketInterceptor.NO
-    }
+    constructor(vararg instances: PacketHandler?) : this(instances.filterNotNull())
+    constructor(instances: Iterable<PacketHandler?>) : this(instances.filterNotNull())
 
     override suspend fun handlePacket(incomingPacket: IncomingPacket) {
-        val p = interceptor.interceptor(incomingPacket) ?: return
         for (instance in instances) {
             try {
-                instance.handlePacket(p)
+                instance.handlePacket(incomingPacket)
             } catch (e: Throwable) {
                 if (e is CancellationException) return
                 throw ExceptionInPacketHandlerException(instance, incomingPacket, e)
@@ -126,72 +111,4 @@ internal class CallPacketFactoryPacketHandler(
     }
 
     override fun toString(): String = "CallPacketFactoryPacketHandler"
-}
-
-
-internal interface PacketInterceptor {
-    /**
-     * Break packet handling chain if return `null`
-     */
-    suspend fun interceptor(incomingPacket: IncomingPacket): IncomingPacket?
-
-    fun registerTemporaryInterceptor(
-        block: suspend PacketTemporaryInterceptor.(
-            PacketTemporaryInterceptor.Context,
-            IncomingPacket,
-        ) -> Unit
-    ): PacketTemporaryInterceptor
-
-    companion object : ComponentKey<PacketInterceptor> {
-        val NO: PacketInterceptor = object : PacketInterceptor {
-            override suspend fun interceptor(incomingPacket: IncomingPacket): IncomingPacket? {
-                return incomingPacket
-            }
-
-            override fun registerTemporaryInterceptor(block: suspend PacketTemporaryInterceptor.(PacketTemporaryInterceptor.Context, IncomingPacket) -> Unit): PacketTemporaryInterceptor {
-                throw UnsupportedOperationException()
-            }
-        }
-    }
-}
-
-internal interface PacketTemporaryInterceptor {
-    interface Context {
-        suspend fun finished()
-    }
-
-    fun unregister()
-}
-
-internal class PacketInterceptorImpl : PacketInterceptor {
-    private val interceptors = ConcurrentLinkedDeque<PacketTemporaryInterceptorImpl>()
-
-    private inner class PacketTemporaryInterceptorImpl(
-        @JvmField val func: suspend PacketTemporaryInterceptor.(PacketTemporaryInterceptor.Context, IncomingPacket) -> Unit,
-    ) : PacketTemporaryInterceptor {
-        override fun unregister() {
-            interceptors.remove(this)
-        }
-    }
-
-    override suspend fun interceptor(incomingPacket: IncomingPacket): IncomingPacket? {
-        val context = object : PacketTemporaryInterceptor.Context {
-            var f = false
-            override suspend fun finished() {
-                f = true
-            }
-        }
-        interceptors.forEach { interceptor ->
-            if (context.f) return null
-            interceptor.func.invoke(interceptor, context, incomingPacket)
-        }
-        if (context.f) return null
-        return incomingPacket
-    }
-
-    override fun registerTemporaryInterceptor(block: suspend PacketTemporaryInterceptor.(PacketTemporaryInterceptor.Context, IncomingPacket) -> Unit): PacketTemporaryInterceptor {
-        val i = PacketTemporaryInterceptorImpl(block)
-        this.interceptors.add(i)
-        return i
-    }
-}
+}