network: never handle low priority packets on network thread

Its not blocked by chunk packets anymore.
This commit is contained in:
Moritz Zwerger 2023-11-11 15:54:57 +01:00
parent 8ae3886f5b
commit 8bc8e0bc5f
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4

View File

@ -16,7 +16,7 @@ package de.bixilon.minosoft.protocol.network.network.client.netty.pipeline
import de.bixilon.kutil.cast.CastUtil.nullCast import de.bixilon.kutil.cast.CastUtil.nullCast
import de.bixilon.kutil.concurrent.pool.DefaultThreadPool import de.bixilon.kutil.concurrent.pool.DefaultThreadPool
import de.bixilon.kutil.concurrent.pool.ThreadPool import de.bixilon.kutil.concurrent.pool.ThreadPool
import de.bixilon.kutil.concurrent.pool.runnable.SimplePoolRunnable import de.bixilon.kutil.concurrent.pool.runnable.ForcePooledRunnable
import de.bixilon.minosoft.config.profile.profiles.other.OtherProfileManager import de.bixilon.minosoft.config.profile.profiles.other.OtherProfileManager
import de.bixilon.minosoft.modding.event.events.PacketReceiveEvent import de.bixilon.minosoft.modding.event.events.PacketReceiveEvent
import de.bixilon.minosoft.protocol.network.connection.Connection import de.bixilon.minosoft.protocol.network.connection.Connection
@ -39,9 +39,8 @@ class ClientPacketHandler(
private val connection: Connection = client.connection private val connection: Connection = client.connection
override fun channelRead0(context: ChannelHandlerContext, queued: QueuedS2CP<*>) { override fun channelRead0(context: ChannelHandlerContext, queued: QueuedS2CP<*>) {
if (queued.type.threadSafe && (DefaultThreadPool.queueSize < DefaultThreadPool.threadCount - 1 || queued.type.lowPriority)) { // only handle async when thread pool not busy if (queued.type.threadSafe && (queued.type.lowPriority || DefaultThreadPool.queueSize < DefaultThreadPool.threadCount - 1)) { // only handle async when thread pool not busy
val runnable = SimplePoolRunnable(priority = if (queued.type.lowPriority) ThreadPool.Priorities.NORMAL else ThreadPool.Priorities.HIGH) val runnable = ForcePooledRunnable(priority = if (queued.type.lowPriority) ThreadPool.Priorities.NORMAL else ThreadPool.Priorities.HIGH) { tryHandle(context, queued.type, queued.packet) }
runnable.runnable = Runnable { tryHandle(context, queued.type, queued.packet) }
DefaultThreadPool += runnable DefaultThreadPool += runnable
} else { } else {
tryHandle(context, queued.type, queued.packet) tryHandle(context, queued.type, queued.packet)