From 9db3a5ef4f7dfe8a5821601b0686eb42687990b1 Mon Sep 17 00:00:00 2001
From: Him188 <Him188@mamoe.net>
Date: Sun, 18 Apr 2021 00:41:09 +0800
Subject: [PATCH] Rearrange packages for component system

---
 mirai-core/src/commonMain/kotlin/MiraiImpl.kt        | 11 +++++------
 mirai-core/src/commonMain/kotlin/QQAndroidBot.kt     | 12 ++++++------
 .../src/commonMain/kotlin/contact/AbstractUser.kt    |  2 +-
 .../src/commonMain/kotlin/contact/GroupImpl.kt       |  2 +-
 .../src/commonMain/kotlin/network/QQAndroidClient.kt |  4 ++--
 .../network/{handler => }/component/ComponentKey.kt  |  4 ++--
 .../{handler => }/component/ComponentStorage.kt      |  2 +-
 .../component/ConcurrentComponentStorage.kt          |  2 +-
 .../component/MutableComponentStorage.kt             |  2 +-
 .../component/NoSuchComponentException.kt            |  2 +-
 .../components/AccountSecretsManager.kt              |  8 ++++----
 .../{handler => }/components/BdhSessionSyncer.kt     |  8 ++++----
 .../{handler => }/components/BotInitProcessor.kt     |  6 +++---
 .../{handler => }/components/ConfigPushSyncer.kt     |  4 ++--
 .../{handler => }/components/ContactCacheService.kt  |  4 ++--
 .../{handler => }/components/ContactUpdater.kt       |  6 +++---
 .../components/NetworkHandlerReference.kt            |  4 ++--
 .../{handler => }/components/OtherClientUpdater.kt   |  6 +++---
 .../network/{handler => }/components/PacketCodec.kt  |  8 ++++----
 .../{handler => }/components/PacketHandler.kt        |  6 +++---
 .../network/{handler => }/components/ServerList.kt   |  6 +++---
 .../network/{handler => }/components/SsoProcessor.kt | 12 ++++++------
 .../network/{handler => }/components/package.kt      |  2 +-
 .../network/{handler => }/context/AccountSecrets.kt  |  2 +-
 .../network/{handler => }/context/BdhSession.kt      |  2 +-
 .../{handler => }/context/SsoProcessorContext.kt     |  8 ++++----
 .../network/{handler => }/context/SsoSession.kt      |  6 +++---
 .../kotlin/network/{handler => }/context/package.kt  |  2 +-
 .../kotlin/network/handler/NetworkHandler.kt         |  1 -
 .../handler/{context => }/NetworkHandlerContext.kt   |  5 ++---
 .../kotlin/network/handler/NetworkHandlerSupport.kt  |  7 +++----
 .../FactoryKeepAliveNetworkHandlerSelector.kt        |  4 ++--
 .../handler/selector/SelectorNetworkHandler.kt       |  2 +-
 .../kotlin/network/handler/state/StateObserver.kt    |  2 +-
 .../src/commonMain/kotlin/network/highway/Highway.kt |  4 ++--
 .../{handler => }/impl/netty/NettyNetworkHandler.kt  | 12 ++++++------
 .../impl/netty/NettyNetworkHandlerFactory.kt         |  4 ++--
 .../network/{handler => }/impl/netty/nettyUtils.kt   |  2 +-
 .../kotlin/network/protocol/packet/PacketFactory.kt  |  4 ++--
 .../kotlin/network/protocol/packet/chat/MultiMsg.kt  |  2 +-
 .../network/protocol/packet/login/ConfigPushSvc.kt   |  8 ++++----
 .../kotlin/network/protocol/packet/login/StatSvc.kt  |  2 +-
 .../src/commonTest/kotlin/network/ServerListTest.kt  |  6 +++---
 .../kotlin/network/component/ComponentKeyTest.kt     |  1 -
 .../kotlin/network/component/ComponentStorageTest.kt |  2 --
 .../network/handler/AbstractNetworkHandlerTest.kt    |  8 ++++----
 .../commonTest/kotlin/network/handler/testUtils.kt   | 11 +++++------
 .../src/commonTest/kotlin/network/sessionUtils.kt    |  6 +++---
 48 files changed, 114 insertions(+), 122 deletions(-)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/component/ComponentKey.kt (95%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/component/ComponentStorage.kt (93%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/component/ConcurrentComponentStorage.kt (97%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/component/MutableComponentStorage.kt (93%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/component/NoSuchComponentException.kt (90%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/components/AccountSecretsManager.kt (93%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/components/BdhSessionSyncer.kt (94%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/components/BotInitProcessor.kt (95%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/components/ConfigPushSyncer.kt (83%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/components/ContactCacheService.kt (95%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/components/ContactUpdater.kt (97%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/components/NetworkHandlerReference.kt (83%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/components/OtherClientUpdater.kt (89%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/components/PacketCodec.kt (96%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/components/PacketHandler.kt (95%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/components/ServerList.kt (93%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/components/SsoProcessor.kt (96%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/components/package.kt (87%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/context/AccountSecrets.kt (98%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/context/BdhSession.kt (92%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/context/SsoProcessorContext.kt (83%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/context/SsoSession.kt (81%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/context/package.kt (87%)
 rename mirai-core/src/commonMain/kotlin/network/handler/{context => }/NetworkHandlerContext.kt (83%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/impl/netty/NettyNetworkHandler.kt (95%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/impl/netty/NettyNetworkHandlerFactory.kt (84%)
 rename mirai-core/src/commonMain/kotlin/network/{handler => }/impl/netty/nettyUtils.kt (94%)

diff --git a/mirai-core/src/commonMain/kotlin/MiraiImpl.kt b/mirai-core/src/commonMain/kotlin/MiraiImpl.kt
index 0c65c5a88..b35988022 100644
--- a/mirai-core/src/commonMain/kotlin/MiraiImpl.kt
+++ b/mirai-core/src/commonMain/kotlin/MiraiImpl.kt
@@ -324,8 +324,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
     override suspend fun getRawGroupList(bot: Bot): Sequence<Long> {
         bot.asQQAndroidBot()
         return bot.network.run {
-            FriendList.GetTroopListSimplify(bot.client)
-                .sendAndExpect<FriendList.GetTroopListSimplify.Response>(retry = 2)
+            FriendList.GetTroopListSimplify(bot.client).sendAndExpect(retry = 2)
         }.groups.asSequence().map { it.groupUin.shl(32) and it.groupCode }
     }
 
@@ -345,7 +344,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
                     targetGroupUin = groupUin,
                     targetGroupCode = groupCode,
                     nextUin = nextUin
-                ).sendAndExpect<FriendList.GetTroopMemberList.Response>(retry = 3)
+                ).sendAndExpect(retry = 3)
                 sequence += data.members.asSequence().map { troopMemberInfo ->
                     MemberInfoImpl(bot.client, troopMemberInfo, ownerId)
                 }
@@ -389,7 +388,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
                 messageIds,
                 messageInternalIds,
                 time,
-            ).sendAndExpect<PbMessageSvc.PbMsgWithDraw.Response>()
+            ).sendAndExpect()
         }
 
         response is PbMessageSvc.PbMsgWithDraw.Response.Success
@@ -411,7 +410,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
                 messageIds,
                 messageInternalIds,
                 time,
-            ).sendAndExpect<PbMessageSvc.PbMsgWithDraw.Response>()
+            ).sendAndExpect()
         }
 
         response is PbMessageSvc.PbMsgWithDraw.Response.Success
@@ -729,7 +728,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
                 client = bot.client,
                 messageData = data,
                 dstUin = sendMessageHandler.targetUin
-            ).sendAndExpect<MultiMsg.ApplyUp.Response>()
+            ).sendAndExpect()
         }
 
         val resId: String
diff --git a/mirai-core/src/commonMain/kotlin/QQAndroidBot.kt b/mirai-core/src/commonMain/kotlin/QQAndroidBot.kt
index d2b3e3486..27c2b7884 100644
--- a/mirai-core/src/commonMain/kotlin/QQAndroidBot.kt
+++ b/mirai-core/src/commonMain/kotlin/QQAndroidBot.kt
@@ -16,19 +16,19 @@ import net.mamoe.mirai.Mirai
 import net.mamoe.mirai.contact.Group
 import net.mamoe.mirai.internal.contact.checkIsGroupImpl
 import net.mamoe.mirai.internal.network.Packet
+import net.mamoe.mirai.internal.network.component.ComponentStorage
+import net.mamoe.mirai.internal.network.component.ConcurrentComponentStorage
+import net.mamoe.mirai.internal.network.components.*
+import net.mamoe.mirai.internal.network.context.SsoProcessorContextImpl
 import net.mamoe.mirai.internal.network.handler.NetworkHandler
-import net.mamoe.mirai.internal.network.handler.component.ComponentStorage
-import net.mamoe.mirai.internal.network.handler.component.ConcurrentComponentStorage
-import net.mamoe.mirai.internal.network.handler.components.*
-import net.mamoe.mirai.internal.network.handler.context.NetworkHandlerContextImpl
-import net.mamoe.mirai.internal.network.handler.context.SsoProcessorContextImpl
-import net.mamoe.mirai.internal.network.handler.impl.netty.NettyNetworkHandlerFactory
+import net.mamoe.mirai.internal.network.handler.NetworkHandlerContextImpl
 import net.mamoe.mirai.internal.network.handler.selector.FactoryKeepAliveNetworkHandlerSelector
 import net.mamoe.mirai.internal.network.handler.selector.SelectorNetworkHandler
 import net.mamoe.mirai.internal.network.handler.state.LoggingStateObserver
 import net.mamoe.mirai.internal.network.handler.state.SafeStateObserver
 import net.mamoe.mirai.internal.network.handler.state.StateObserver
 import net.mamoe.mirai.internal.network.handler.state.safe
+import net.mamoe.mirai.internal.network.impl.netty.NettyNetworkHandlerFactory
 import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket
 import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketWithRespType
 import net.mamoe.mirai.internal.network.protocol.packet.login.StatSvc
diff --git a/mirai-core/src/commonMain/kotlin/contact/AbstractUser.kt b/mirai-core/src/commonMain/kotlin/contact/AbstractUser.kt
index eb4b5acfe..ca47440e3 100644
--- a/mirai-core/src/commonMain/kotlin/contact/AbstractUser.kt
+++ b/mirai-core/src/commonMain/kotlin/contact/AbstractUser.kt
@@ -18,7 +18,7 @@ import net.mamoe.mirai.event.events.*
 import net.mamoe.mirai.internal.message.OfflineFriendImage
 import net.mamoe.mirai.internal.message.contextualBugReportException
 import net.mamoe.mirai.internal.message.getImageType
-import net.mamoe.mirai.internal.network.handler.context.BdhSession
+import net.mamoe.mirai.internal.network.context.BdhSession
 import net.mamoe.mirai.internal.network.highway.ChannelKind
 import net.mamoe.mirai.internal.network.highway.Highway
 import net.mamoe.mirai.internal.network.highway.ResourceKind.PRIVATE_IMAGE
diff --git a/mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt b/mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt
index f80538ee2..f1d5ffd4e 100644
--- a/mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt
+++ b/mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt
@@ -22,8 +22,8 @@ import net.mamoe.mirai.event.events.*
 import net.mamoe.mirai.internal.QQAndroidBot
 import net.mamoe.mirai.internal.contact.info.MemberInfoImpl
 import net.mamoe.mirai.internal.message.OfflineGroupImage
+import net.mamoe.mirai.internal.network.context.BdhSession
 import net.mamoe.mirai.internal.network.handler.NetworkHandler
-import net.mamoe.mirai.internal.network.handler.context.BdhSession
 import net.mamoe.mirai.internal.network.highway.ChannelKind
 import net.mamoe.mirai.internal.network.highway.Highway
 import net.mamoe.mirai.internal.network.highway.ResourceKind.GROUP_IMAGE
diff --git a/mirai-core/src/commonMain/kotlin/network/QQAndroidClient.kt b/mirai-core/src/commonMain/kotlin/network/QQAndroidClient.kt
index 7d180ff64..ed4cb7777 100644
--- a/mirai-core/src/commonMain/kotlin/network/QQAndroidClient.kt
+++ b/mirai-core/src/commonMain/kotlin/network/QQAndroidClient.kt
@@ -19,8 +19,8 @@ import kotlinx.io.core.toByteArray
 import net.mamoe.mirai.data.OnlineStatus
 import net.mamoe.mirai.internal.BotAccount
 import net.mamoe.mirai.internal.QQAndroidBot
-import net.mamoe.mirai.internal.network.handler.context.AccountSecrets
-import net.mamoe.mirai.internal.network.handler.context.SsoSession
+import net.mamoe.mirai.internal.network.context.AccountSecrets
+import net.mamoe.mirai.internal.network.context.SsoSession
 import net.mamoe.mirai.internal.network.protocol.SyncingCacheList
 import net.mamoe.mirai.internal.network.protocol.data.jce.FileStoragePushFSSvcList
 import net.mamoe.mirai.internal.network.protocol.packet.Tlv
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/component/ComponentKey.kt b/mirai-core/src/commonMain/kotlin/network/component/ComponentKey.kt
similarity index 95%
rename from mirai-core/src/commonMain/kotlin/network/handler/component/ComponentKey.kt
rename to mirai-core/src/commonMain/kotlin/network/component/ComponentKey.kt
index 1931e0846..212a9a6f8 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/component/ComponentKey.kt
+++ b/mirai-core/src/commonMain/kotlin/network/component/ComponentKey.kt
@@ -7,7 +7,7 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.component
+package net.mamoe.mirai.internal.network.component
 
 import kotlin.reflect.KClass
 import kotlin.reflect.KClassifier
@@ -25,7 +25,7 @@ internal interface ComponentKey<T : Any> {
      * Get name of `T`.
      *
      * - If [qualified] is `false`, example: `PacketCodec`.
-     * - If [qualified] is `true`, example: `net.mamoe.mirai.internal.network.handler.components.PacketCodec`.
+     * - If [qualified] is `true`, example: `net.mamoe.mirai.internal.network.components.PacketCodec`.
      */
     fun componentName(qualified: Boolean = false): String {
         return getComponentTypeArgumentClassifier().renderClassifier(fullName = qualified)
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/component/ComponentStorage.kt b/mirai-core/src/commonMain/kotlin/network/component/ComponentStorage.kt
similarity index 93%
rename from mirai-core/src/commonMain/kotlin/network/handler/component/ComponentStorage.kt
rename to mirai-core/src/commonMain/kotlin/network/component/ComponentStorage.kt
index 1b8929a75..f89ab5859 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/component/ComponentStorage.kt
+++ b/mirai-core/src/commonMain/kotlin/network/component/ComponentStorage.kt
@@ -7,7 +7,7 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.component
+package net.mamoe.mirai.internal.network.component
 
 import org.jetbrains.annotations.TestOnly
 
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/component/ConcurrentComponentStorage.kt b/mirai-core/src/commonMain/kotlin/network/component/ConcurrentComponentStorage.kt
similarity index 97%
rename from mirai-core/src/commonMain/kotlin/network/handler/component/ConcurrentComponentStorage.kt
rename to mirai-core/src/commonMain/kotlin/network/component/ConcurrentComponentStorage.kt
index 7110fcaa3..5f51ffb15 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/component/ConcurrentComponentStorage.kt
+++ b/mirai-core/src/commonMain/kotlin/network/component/ConcurrentComponentStorage.kt
@@ -7,7 +7,7 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.component
+package net.mamoe.mirai.internal.network.component
 
 import net.mamoe.mirai.utils.systemProp
 import java.util.concurrent.ConcurrentHashMap
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/component/MutableComponentStorage.kt b/mirai-core/src/commonMain/kotlin/network/component/MutableComponentStorage.kt
similarity index 93%
rename from mirai-core/src/commonMain/kotlin/network/handler/component/MutableComponentStorage.kt
rename to mirai-core/src/commonMain/kotlin/network/component/MutableComponentStorage.kt
index 2740c5151..ec04d0622 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/component/MutableComponentStorage.kt
+++ b/mirai-core/src/commonMain/kotlin/network/component/MutableComponentStorage.kt
@@ -7,7 +7,7 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.component
+package net.mamoe.mirai.internal.network.component
 
 /**
  * Facade for [component][ComponentKey]s.
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/component/NoSuchComponentException.kt b/mirai-core/src/commonMain/kotlin/network/component/NoSuchComponentException.kt
similarity index 90%
rename from mirai-core/src/commonMain/kotlin/network/handler/component/NoSuchComponentException.kt
rename to mirai-core/src/commonMain/kotlin/network/component/NoSuchComponentException.kt
index 2401b49a2..ae320f5b3 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/component/NoSuchComponentException.kt
+++ b/mirai-core/src/commonMain/kotlin/network/component/NoSuchComponentException.kt
@@ -7,7 +7,7 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.component
+package net.mamoe.mirai.internal.network.component
 
 internal data class NoSuchComponentException(
     val key: ComponentKey<*>,
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/components/AccountSecretsManager.kt b/mirai-core/src/commonMain/kotlin/network/components/AccountSecretsManager.kt
similarity index 93%
rename from mirai-core/src/commonMain/kotlin/network/handler/components/AccountSecretsManager.kt
rename to mirai-core/src/commonMain/kotlin/network/components/AccountSecretsManager.kt
index d5f7354e9..783b3ea59 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/components/AccountSecretsManager.kt
+++ b/mirai-core/src/commonMain/kotlin/network/components/AccountSecretsManager.kt
@@ -7,13 +7,13 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.components
+package net.mamoe.mirai.internal.network.components
 
 import net.mamoe.mirai.Bot
 import net.mamoe.mirai.internal.BotAccount
-import net.mamoe.mirai.internal.network.handler.component.ComponentKey
-import net.mamoe.mirai.internal.network.handler.context.AccountSecrets
-import net.mamoe.mirai.internal.network.handler.context.AccountSecretsImpl
+import net.mamoe.mirai.internal.network.component.ComponentKey
+import net.mamoe.mirai.internal.network.context.AccountSecrets
+import net.mamoe.mirai.internal.network.context.AccountSecretsImpl
 import net.mamoe.mirai.internal.utils.actualCacheDir
 import net.mamoe.mirai.internal.utils.crypto.TEA
 import net.mamoe.mirai.internal.utils.io.serialization.loadAs
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/components/BdhSessionSyncer.kt b/mirai-core/src/commonMain/kotlin/network/components/BdhSessionSyncer.kt
similarity index 94%
rename from mirai-core/src/commonMain/kotlin/network/handler/components/BdhSessionSyncer.kt
rename to mirai-core/src/commonMain/kotlin/network/components/BdhSessionSyncer.kt
index 9eff3fffa..36929429d 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/components/BdhSessionSyncer.kt
+++ b/mirai-core/src/commonMain/kotlin/network/components/BdhSessionSyncer.kt
@@ -7,7 +7,7 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.components
+package net.mamoe.mirai.internal.network.components
 
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -15,9 +15,9 @@ import kotlinx.serialization.KSerializer
 import kotlinx.serialization.builtins.SetSerializer
 import net.mamoe.mirai.internal.network.JsonForCache
 import net.mamoe.mirai.internal.network.ProtoBufForCache
-import net.mamoe.mirai.internal.network.handler.component.ComponentKey
-import net.mamoe.mirai.internal.network.handler.component.ComponentStorage
-import net.mamoe.mirai.internal.network.handler.context.BdhSession
+import net.mamoe.mirai.internal.network.component.ComponentKey
+import net.mamoe.mirai.internal.network.component.ComponentStorage
+import net.mamoe.mirai.internal.network.context.BdhSession
 import net.mamoe.mirai.internal.utils.actualCacheDir
 import net.mamoe.mirai.utils.BotConfiguration
 import net.mamoe.mirai.utils.MiraiLogger
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/components/BotInitProcessor.kt b/mirai-core/src/commonMain/kotlin/network/components/BotInitProcessor.kt
similarity index 95%
rename from mirai-core/src/commonMain/kotlin/network/handler/components/BotInitProcessor.kt
rename to mirai-core/src/commonMain/kotlin/network/components/BotInitProcessor.kt
index 204fba8b6..2bf24b4bb 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/components/BotInitProcessor.kt
+++ b/mirai-core/src/commonMain/kotlin/network/components/BotInitProcessor.kt
@@ -7,17 +7,17 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.components
+package net.mamoe.mirai.internal.network.components
 
 import kotlinx.atomicfu.atomic
 import kotlinx.coroutines.*
 import net.mamoe.mirai.event.nextEvent
 import net.mamoe.mirai.internal.QQAndroidBot
 import net.mamoe.mirai.internal.network.Packet
+import net.mamoe.mirai.internal.network.component.ComponentKey
+import net.mamoe.mirai.internal.network.component.ComponentStorage
 import net.mamoe.mirai.internal.network.handler.NetworkHandler.State
 import net.mamoe.mirai.internal.network.handler.NetworkHandlerSupport
-import net.mamoe.mirai.internal.network.handler.component.ComponentKey
-import net.mamoe.mirai.internal.network.handler.component.ComponentStorage
 import net.mamoe.mirai.internal.network.handler.state.StateChangedObserver
 import net.mamoe.mirai.internal.network.handler.state.StateObserver
 import net.mamoe.mirai.internal.network.protocol.data.proto.MsgSvc
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/components/ConfigPushSyncer.kt b/mirai-core/src/commonMain/kotlin/network/components/ConfigPushSyncer.kt
similarity index 83%
rename from mirai-core/src/commonMain/kotlin/network/handler/components/ConfigPushSyncer.kt
rename to mirai-core/src/commonMain/kotlin/network/components/ConfigPushSyncer.kt
index 0f6d04c28..cfcfa9809 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/components/ConfigPushSyncer.kt
+++ b/mirai-core/src/commonMain/kotlin/network/components/ConfigPushSyncer.kt
@@ -7,9 +7,9 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.components
+package net.mamoe.mirai.internal.network.components
 
-import net.mamoe.mirai.internal.network.handler.component.ComponentKey
+import net.mamoe.mirai.internal.network.component.ComponentKey
 
 internal interface ConfigPushSyncer {
     suspend fun awaitSync()
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/components/ContactCacheService.kt b/mirai-core/src/commonMain/kotlin/network/components/ContactCacheService.kt
similarity index 95%
rename from mirai-core/src/commonMain/kotlin/network/handler/components/ContactCacheService.kt
rename to mirai-core/src/commonMain/kotlin/network/components/ContactCacheService.kt
index 60329355d..8561f8791 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/components/ContactCacheService.kt
+++ b/mirai-core/src/commonMain/kotlin/network/components/ContactCacheService.kt
@@ -7,13 +7,13 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.components
+package net.mamoe.mirai.internal.network.components
 
 import net.mamoe.mirai.internal.QQAndroidBot
 import net.mamoe.mirai.internal.network.FriendListCache
 import net.mamoe.mirai.internal.network.GroupMemberListCaches
 import net.mamoe.mirai.internal.network.JsonForCache
-import net.mamoe.mirai.internal.network.handler.component.ComponentKey
+import net.mamoe.mirai.internal.network.component.ComponentKey
 import net.mamoe.mirai.internal.utils.ScheduledJob
 import net.mamoe.mirai.internal.utils.friendCacheFile
 import net.mamoe.mirai.utils.createFileIfNotExists
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/components/ContactUpdater.kt b/mirai-core/src/commonMain/kotlin/network/components/ContactUpdater.kt
similarity index 97%
rename from mirai-core/src/commonMain/kotlin/network/handler/components/ContactUpdater.kt
rename to mirai-core/src/commonMain/kotlin/network/components/ContactUpdater.kt
index d685e87ca..71eb2026f 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/components/ContactUpdater.kt
+++ b/mirai-core/src/commonMain/kotlin/network/components/ContactUpdater.kt
@@ -7,7 +7,7 @@
  * https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.components
+package net.mamoe.mirai.internal.network.components
 
 import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.cancel
@@ -30,8 +30,8 @@ import net.mamoe.mirai.internal.contact.info.MemberInfoImpl
 import net.mamoe.mirai.internal.contact.info.StrangerInfoImpl
 import net.mamoe.mirai.internal.contact.toMiraiFriendInfo
 import net.mamoe.mirai.internal.network.Packet
-import net.mamoe.mirai.internal.network.handler.component.ComponentKey
-import net.mamoe.mirai.internal.network.handler.component.ComponentStorage
+import net.mamoe.mirai.internal.network.component.ComponentKey
+import net.mamoe.mirai.internal.network.component.ComponentStorage
 import net.mamoe.mirai.internal.network.handler.logger
 import net.mamoe.mirai.internal.network.isValid
 import net.mamoe.mirai.internal.network.protocol.data.jce.StTroopNum
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/components/NetworkHandlerReference.kt b/mirai-core/src/commonMain/kotlin/network/components/NetworkHandlerReference.kt
similarity index 83%
rename from mirai-core/src/commonMain/kotlin/network/handler/components/NetworkHandlerReference.kt
rename to mirai-core/src/commonMain/kotlin/network/components/NetworkHandlerReference.kt
index 02c7094b7..879b78657 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/components/NetworkHandlerReference.kt
+++ b/mirai-core/src/commonMain/kotlin/network/components/NetworkHandlerReference.kt
@@ -7,10 +7,10 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.components
+package net.mamoe.mirai.internal.network.components
 
+import net.mamoe.mirai.internal.network.component.ComponentKey
 import net.mamoe.mirai.internal.network.handler.NetworkHandler
-import net.mamoe.mirai.internal.network.handler.component.ComponentKey
 
 internal class NetworkHandlerReference(
     private val getInstance: () -> NetworkHandler,
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/components/OtherClientUpdater.kt b/mirai-core/src/commonMain/kotlin/network/components/OtherClientUpdater.kt
similarity index 89%
rename from mirai-core/src/commonMain/kotlin/network/handler/components/OtherClientUpdater.kt
rename to mirai-core/src/commonMain/kotlin/network/components/OtherClientUpdater.kt
index e5bb86bd4..19808e9ae 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/components/OtherClientUpdater.kt
+++ b/mirai-core/src/commonMain/kotlin/network/components/OtherClientUpdater.kt
@@ -7,7 +7,7 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.components
+package net.mamoe.mirai.internal.network.components
 
 import kotlinx.coroutines.sync.Mutex
 import kotlinx.coroutines.sync.withLock
@@ -18,8 +18,8 @@ import net.mamoe.mirai.contact.deviceName
 import net.mamoe.mirai.contact.platform
 import net.mamoe.mirai.internal.QQAndroidBot
 import net.mamoe.mirai.internal.contact.createOtherClient
-import net.mamoe.mirai.internal.network.handler.component.ComponentKey
-import net.mamoe.mirai.internal.network.handler.component.ComponentStorage
+import net.mamoe.mirai.internal.network.component.ComponentKey
+import net.mamoe.mirai.internal.network.component.ComponentStorage
 import net.mamoe.mirai.utils.MiraiLogger
 import net.mamoe.mirai.utils.info
 
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/components/PacketCodec.kt b/mirai-core/src/commonMain/kotlin/network/components/PacketCodec.kt
similarity index 96%
rename from mirai-core/src/commonMain/kotlin/network/handler/components/PacketCodec.kt
rename to mirai-core/src/commonMain/kotlin/network/components/PacketCodec.kt
index 2c4714058..9e41462e2 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/components/PacketCodec.kt
+++ b/mirai-core/src/commonMain/kotlin/network/components/PacketCodec.kt
@@ -7,13 +7,13 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.components
+package net.mamoe.mirai.internal.network.components
 
 import kotlinx.io.core.*
 import net.mamoe.mirai.internal.QQAndroidBot
-import net.mamoe.mirai.internal.network.handler.component.ComponentKey
-import net.mamoe.mirai.internal.network.handler.components.PacketCodec.Companion.PacketLogger
-import net.mamoe.mirai.internal.network.handler.context.SsoSession
+import net.mamoe.mirai.internal.network.component.ComponentKey
+import net.mamoe.mirai.internal.network.components.PacketCodec.Companion.PacketLogger
+import net.mamoe.mirai.internal.network.context.SsoSession
 import net.mamoe.mirai.internal.network.protocol.packet.*
 import net.mamoe.mirai.internal.utils.crypto.TEA
 import net.mamoe.mirai.internal.utils.crypto.adjustToPublicKey
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/components/PacketHandler.kt b/mirai-core/src/commonMain/kotlin/network/components/PacketHandler.kt
similarity index 95%
rename from mirai-core/src/commonMain/kotlin/network/handler/components/PacketHandler.kt
rename to mirai-core/src/commonMain/kotlin/network/components/PacketHandler.kt
index 2dbb63838..12f250371 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/components/PacketHandler.kt
+++ b/mirai-core/src/commonMain/kotlin/network/components/PacketHandler.kt
@@ -7,7 +7,7 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.components
+package net.mamoe.mirai.internal.network.components
 
 import net.mamoe.mirai.event.BroadcastControllable
 import net.mamoe.mirai.event.CancellableEvent
@@ -19,8 +19,8 @@ import net.mamoe.mirai.internal.contact.logMessageReceived
 import net.mamoe.mirai.internal.contact.replaceMagicCodes
 import net.mamoe.mirai.internal.network.Packet
 import net.mamoe.mirai.internal.network.ParseErrorPacket
-import net.mamoe.mirai.internal.network.handler.component.ComponentKey
-import net.mamoe.mirai.internal.network.handler.component.ComponentStorage
+import net.mamoe.mirai.internal.network.component.ComponentKey
+import net.mamoe.mirai.internal.network.component.ComponentStorage
 import net.mamoe.mirai.internal.network.protocol.packet.IncomingPacket
 import net.mamoe.mirai.utils.MiraiLogger
 import net.mamoe.mirai.utils.verbose
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/components/ServerList.kt b/mirai-core/src/commonMain/kotlin/network/components/ServerList.kt
similarity index 93%
rename from mirai-core/src/commonMain/kotlin/network/handler/components/ServerList.kt
rename to mirai-core/src/commonMain/kotlin/network/components/ServerList.kt
index 130bdf4ea..d5a621ba4 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/components/ServerList.kt
+++ b/mirai-core/src/commonMain/kotlin/network/components/ServerList.kt
@@ -7,11 +7,11 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.components
+package net.mamoe.mirai.internal.network.components
 
 import kotlinx.serialization.Serializable
-import net.mamoe.mirai.internal.network.handler.component.ComponentKey
-import net.mamoe.mirai.internal.network.handler.components.ServerList.Companion.DEFAULT_SERVER_LIST
+import net.mamoe.mirai.internal.network.component.ComponentKey
+import net.mamoe.mirai.internal.network.components.ServerList.Companion.DEFAULT_SERVER_LIST
 import java.net.InetSocketAddress
 import java.util.*
 
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/components/SsoProcessor.kt b/mirai-core/src/commonMain/kotlin/network/components/SsoProcessor.kt
similarity index 96%
rename from mirai-core/src/commonMain/kotlin/network/handler/components/SsoProcessor.kt
rename to mirai-core/src/commonMain/kotlin/network/components/SsoProcessor.kt
index 4bc43f1ab..ad87048c1 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/components/SsoProcessor.kt
+++ b/mirai-core/src/commonMain/kotlin/network/components/SsoProcessor.kt
@@ -7,7 +7,7 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.components
+package net.mamoe.mirai.internal.network.components
 
 import kotlinx.coroutines.CoroutineName
 import kotlinx.coroutines.CoroutineScope
@@ -15,15 +15,15 @@ import kotlinx.coroutines.launch
 import net.mamoe.mirai.internal.QQAndroidBot
 import net.mamoe.mirai.internal.network.Packet
 import net.mamoe.mirai.internal.network.QQAndroidClient
+import net.mamoe.mirai.internal.network.component.ComponentKey
+import net.mamoe.mirai.internal.network.context.AccountSecretsImpl
+import net.mamoe.mirai.internal.network.context.SsoProcessorContext
+import net.mamoe.mirai.internal.network.context.SsoSession
 import net.mamoe.mirai.internal.network.handler.NetworkHandler
 import net.mamoe.mirai.internal.network.handler.NetworkHandlerSupport
-import net.mamoe.mirai.internal.network.handler.component.ComponentKey
-import net.mamoe.mirai.internal.network.handler.context.AccountSecretsImpl
-import net.mamoe.mirai.internal.network.handler.context.SsoProcessorContext
-import net.mamoe.mirai.internal.network.handler.context.SsoSession
-import net.mamoe.mirai.internal.network.handler.impl.netty.NettyNetworkHandler
 import net.mamoe.mirai.internal.network.handler.state.StateChangedObserver
 import net.mamoe.mirai.internal.network.handler.state.StateObserver
+import net.mamoe.mirai.internal.network.impl.netty.NettyNetworkHandler
 import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketWithRespType
 import net.mamoe.mirai.internal.network.protocol.packet.login.WtLogin.Login.LoginPacketResponse
 import net.mamoe.mirai.internal.network.protocol.packet.login.WtLogin.Login.LoginPacketResponse.Captcha
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/components/package.kt b/mirai-core/src/commonMain/kotlin/network/components/package.kt
similarity index 87%
rename from mirai-core/src/commonMain/kotlin/network/handler/components/package.kt
rename to mirai-core/src/commonMain/kotlin/network/components/package.kt
index 531bef7db..79d26f6c4 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/components/package.kt
+++ b/mirai-core/src/commonMain/kotlin/network/components/package.kt
@@ -10,4 +10,4 @@
 /**
  * 放置一些小组件
  */
-package net.mamoe.mirai.internal.network.handler.components
\ No newline at end of file
+package net.mamoe.mirai.internal.network.components
\ No newline at end of file
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/context/AccountSecrets.kt b/mirai-core/src/commonMain/kotlin/network/context/AccountSecrets.kt
similarity index 98%
rename from mirai-core/src/commonMain/kotlin/network/handler/context/AccountSecrets.kt
rename to mirai-core/src/commonMain/kotlin/network/context/AccountSecrets.kt
index 1afa04f83..0360b768e 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/context/AccountSecrets.kt
+++ b/mirai-core/src/commonMain/kotlin/network/context/AccountSecrets.kt
@@ -7,7 +7,7 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.context
+package net.mamoe.mirai.internal.network.context
 
 import kotlinx.io.core.toByteArray
 import kotlinx.serialization.Serializable
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/context/BdhSession.kt b/mirai-core/src/commonMain/kotlin/network/context/BdhSession.kt
similarity index 92%
rename from mirai-core/src/commonMain/kotlin/network/handler/context/BdhSession.kt
rename to mirai-core/src/commonMain/kotlin/network/context/BdhSession.kt
index e811afb91..fe8c78af1 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/context/BdhSession.kt
+++ b/mirai-core/src/commonMain/kotlin/network/context/BdhSession.kt
@@ -7,7 +7,7 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.context
+package net.mamoe.mirai.internal.network.context
 
 import kotlinx.serialization.Serializable
 import java.util.concurrent.CopyOnWriteArraySet
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/context/SsoProcessorContext.kt b/mirai-core/src/commonMain/kotlin/network/context/SsoProcessorContext.kt
similarity index 83%
rename from mirai-core/src/commonMain/kotlin/network/handler/context/SsoProcessorContext.kt
rename to mirai-core/src/commonMain/kotlin/network/context/SsoProcessorContext.kt
index df80e0d7e..0c00b0642 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/context/SsoProcessorContext.kt
+++ b/mirai-core/src/commonMain/kotlin/network/context/SsoProcessorContext.kt
@@ -7,13 +7,13 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.context
+package net.mamoe.mirai.internal.network.context
 
 import net.mamoe.mirai.internal.BotAccount
 import net.mamoe.mirai.internal.QQAndroidBot
-import net.mamoe.mirai.internal.network.handler.components.AccountSecretsManager
-import net.mamoe.mirai.internal.network.handler.components.SsoProcessor
-import net.mamoe.mirai.internal.network.handler.components.createAccountsSecretsManager
+import net.mamoe.mirai.internal.network.components.AccountSecretsManager
+import net.mamoe.mirai.internal.network.components.SsoProcessor
+import net.mamoe.mirai.internal.network.components.createAccountsSecretsManager
 import net.mamoe.mirai.utils.BotConfiguration
 import net.mamoe.mirai.utils.DeviceInfo
 
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/context/SsoSession.kt b/mirai-core/src/commonMain/kotlin/network/context/SsoSession.kt
similarity index 81%
rename from mirai-core/src/commonMain/kotlin/network/handler/context/SsoSession.kt
rename to mirai-core/src/commonMain/kotlin/network/context/SsoSession.kt
index 458549f50..353df3959 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/context/SsoSession.kt
+++ b/mirai-core/src/commonMain/kotlin/network/context/SsoSession.kt
@@ -7,11 +7,11 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.context
+package net.mamoe.mirai.internal.network.context
 
 import net.mamoe.mirai.internal.network.WLoginSigInfo
-import net.mamoe.mirai.internal.network.handler.components.PacketCodec
-import net.mamoe.mirai.internal.network.handler.components.SsoProcessor
+import net.mamoe.mirai.internal.network.components.PacketCodec
+import net.mamoe.mirai.internal.network.components.SsoProcessor
 import net.mamoe.mirai.internal.utils.crypto.ECDH
 
 /**
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/context/package.kt b/mirai-core/src/commonMain/kotlin/network/context/package.kt
similarity index 87%
rename from mirai-core/src/commonMain/kotlin/network/handler/context/package.kt
rename to mirai-core/src/commonMain/kotlin/network/context/package.kt
index 617a3a925..65b362a48 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/context/package.kt
+++ b/mirai-core/src/commonMain/kotlin/network/context/package.kt
@@ -10,4 +10,4 @@
 /**
  * 放各种 context
  */
-package net.mamoe.mirai.internal.network.handler.context
\ No newline at end of file
+package net.mamoe.mirai.internal.network.context
\ No newline at end of file
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/NetworkHandler.kt b/mirai-core/src/commonMain/kotlin/network/handler/NetworkHandler.kt
index 579b17cd7..adf3cb0d1 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/NetworkHandler.kt
+++ b/mirai-core/src/commonMain/kotlin/network/handler/NetworkHandler.kt
@@ -12,7 +12,6 @@ package net.mamoe.mirai.internal.network.handler
 import kotlinx.coroutines.selects.SelectClause1
 import net.mamoe.mirai.internal.network.Packet
 import net.mamoe.mirai.internal.network.handler.NetworkHandler.State
-import net.mamoe.mirai.internal.network.handler.selector.SelectorNetworkHandler
 import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket
 import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketWithRespType
 import net.mamoe.mirai.utils.MiraiLogger
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/context/NetworkHandlerContext.kt b/mirai-core/src/commonMain/kotlin/network/handler/NetworkHandlerContext.kt
similarity index 83%
rename from mirai-core/src/commonMain/kotlin/network/handler/context/NetworkHandlerContext.kt
rename to mirai-core/src/commonMain/kotlin/network/handler/NetworkHandlerContext.kt
index 66991cc97..ce62138bf 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/context/NetworkHandlerContext.kt
+++ b/mirai-core/src/commonMain/kotlin/network/handler/NetworkHandlerContext.kt
@@ -7,11 +7,10 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.context
+package net.mamoe.mirai.internal.network.handler
 
 import net.mamoe.mirai.internal.QQAndroidBot
-import net.mamoe.mirai.internal.network.handler.NetworkHandler
-import net.mamoe.mirai.internal.network.handler.component.ComponentStorage
+import net.mamoe.mirai.internal.network.component.ComponentStorage
 import net.mamoe.mirai.utils.MiraiLogger
 
 /**
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/NetworkHandlerSupport.kt b/mirai-core/src/commonMain/kotlin/network/handler/NetworkHandlerSupport.kt
index bb92ef41b..248f781b7 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/NetworkHandlerSupport.kt
+++ b/mirai-core/src/commonMain/kotlin/network/handler/NetworkHandlerSupport.kt
@@ -12,10 +12,9 @@ package net.mamoe.mirai.internal.network.handler
 import kotlinx.coroutines.*
 import kotlinx.coroutines.selects.SelectClause1
 import net.mamoe.mirai.internal.network.Packet
-import net.mamoe.mirai.internal.network.handler.components.PacketCodec
-import net.mamoe.mirai.internal.network.handler.components.PacketHandler
-import net.mamoe.mirai.internal.network.handler.components.RawIncomingPacket
-import net.mamoe.mirai.internal.network.handler.context.NetworkHandlerContext
+import net.mamoe.mirai.internal.network.components.PacketCodec
+import net.mamoe.mirai.internal.network.components.PacketHandler
+import net.mamoe.mirai.internal.network.components.RawIncomingPacket
 import net.mamoe.mirai.internal.network.handler.state.StateObserver
 import net.mamoe.mirai.internal.network.protocol.packet.IncomingPacket
 import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/selector/FactoryKeepAliveNetworkHandlerSelector.kt b/mirai-core/src/commonMain/kotlin/network/handler/selector/FactoryKeepAliveNetworkHandlerSelector.kt
index e6829ef61..b167dbd05 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/selector/FactoryKeepAliveNetworkHandlerSelector.kt
+++ b/mirai-core/src/commonMain/kotlin/network/handler/selector/FactoryKeepAliveNetworkHandlerSelector.kt
@@ -9,10 +9,10 @@
 
 package net.mamoe.mirai.internal.network.handler.selector
 
+import net.mamoe.mirai.internal.network.components.ServerList
 import net.mamoe.mirai.internal.network.handler.NetworkHandler
+import net.mamoe.mirai.internal.network.handler.NetworkHandlerContext
 import net.mamoe.mirai.internal.network.handler.NetworkHandlerFactory
-import net.mamoe.mirai.internal.network.handler.components.ServerList
-import net.mamoe.mirai.internal.network.handler.context.NetworkHandlerContext
 
 /**
  * [AbstractKeepAliveNetworkHandlerSelector] implementation delegating [createInstance] to [factory]
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/selector/SelectorNetworkHandler.kt b/mirai-core/src/commonMain/kotlin/network/handler/selector/SelectorNetworkHandler.kt
index cc827aea9..a6bf77943 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/selector/SelectorNetworkHandler.kt
+++ b/mirai-core/src/commonMain/kotlin/network/handler/selector/SelectorNetworkHandler.kt
@@ -16,7 +16,7 @@ import kotlinx.coroutines.async
 import kotlinx.coroutines.selects.SelectClause1
 import net.mamoe.mirai.internal.network.handler.NetworkHandler
 import net.mamoe.mirai.internal.network.handler.NetworkHandler.State
-import net.mamoe.mirai.internal.network.handler.context.NetworkHandlerContext
+import net.mamoe.mirai.internal.network.handler.NetworkHandlerContext
 import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket
 
 /**
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/state/StateObserver.kt b/mirai-core/src/commonMain/kotlin/network/handler/state/StateObserver.kt
index bfb762bc4..0b2fa59a0 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/state/StateObserver.kt
+++ b/mirai-core/src/commonMain/kotlin/network/handler/state/StateObserver.kt
@@ -9,9 +9,9 @@
 
 package net.mamoe.mirai.internal.network.handler.state
 
+import net.mamoe.mirai.internal.network.component.ComponentKey
 import net.mamoe.mirai.internal.network.handler.NetworkHandler
 import net.mamoe.mirai.internal.network.handler.NetworkHandlerSupport
-import net.mamoe.mirai.internal.network.handler.component.ComponentKey
 import net.mamoe.mirai.internal.network.handler.state.CombinedStateObserver.Companion.plus
 
 /**
diff --git a/mirai-core/src/commonMain/kotlin/network/highway/Highway.kt b/mirai-core/src/commonMain/kotlin/network/highway/Highway.kt
index 3ab53299c..d68b538c7 100644
--- a/mirai-core/src/commonMain/kotlin/network/highway/Highway.kt
+++ b/mirai-core/src/commonMain/kotlin/network/highway/Highway.kt
@@ -23,8 +23,8 @@ import kotlinx.io.core.writeFully
 import net.mamoe.mirai.internal.QQAndroidBot
 import net.mamoe.mirai.internal.asQQAndroidBot
 import net.mamoe.mirai.internal.network.QQAndroidClient
-import net.mamoe.mirai.internal.network.handler.components.BdhSessionSyncer
-import net.mamoe.mirai.internal.network.handler.context.BdhSession
+import net.mamoe.mirai.internal.network.components.BdhSessionSyncer
+import net.mamoe.mirai.internal.network.context.BdhSession
 import net.mamoe.mirai.internal.network.handler.logger
 import net.mamoe.mirai.internal.network.protocol.data.proto.CSDataHighwayHead
 import net.mamoe.mirai.internal.network.subAppId
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/impl/netty/NettyNetworkHandler.kt b/mirai-core/src/commonMain/kotlin/network/impl/netty/NettyNetworkHandler.kt
similarity index 95%
rename from mirai-core/src/commonMain/kotlin/network/handler/impl/netty/NettyNetworkHandler.kt
rename to mirai-core/src/commonMain/kotlin/network/impl/netty/NettyNetworkHandler.kt
index 6c9f5cf3a..31f266c4d 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/impl/netty/NettyNetworkHandler.kt
+++ b/mirai-core/src/commonMain/kotlin/network/impl/netty/NettyNetworkHandler.kt
@@ -7,7 +7,7 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.impl.netty
+package net.mamoe.mirai.internal.network.impl.netty
 
 import io.netty.bootstrap.Bootstrap
 import io.netty.buffer.ByteBuf
@@ -22,13 +22,13 @@ import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.channels.sendBlocking
 import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.flow.consumeAsFlow
+import net.mamoe.mirai.internal.network.components.BotInitProcessor
+import net.mamoe.mirai.internal.network.components.PacketCodec
+import net.mamoe.mirai.internal.network.components.RawIncomingPacket
+import net.mamoe.mirai.internal.network.components.SsoProcessor
 import net.mamoe.mirai.internal.network.handler.NetworkHandler.State
+import net.mamoe.mirai.internal.network.handler.NetworkHandlerContext
 import net.mamoe.mirai.internal.network.handler.NetworkHandlerSupport
-import net.mamoe.mirai.internal.network.handler.components.BotInitProcessor
-import net.mamoe.mirai.internal.network.handler.components.PacketCodec
-import net.mamoe.mirai.internal.network.handler.components.RawIncomingPacket
-import net.mamoe.mirai.internal.network.handler.components.SsoProcessor
-import net.mamoe.mirai.internal.network.handler.context.NetworkHandlerContext
 import net.mamoe.mirai.internal.network.handler.state.StateObserver
 import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket
 import net.mamoe.mirai.utils.childScope
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/impl/netty/NettyNetworkHandlerFactory.kt b/mirai-core/src/commonMain/kotlin/network/impl/netty/NettyNetworkHandlerFactory.kt
similarity index 84%
rename from mirai-core/src/commonMain/kotlin/network/handler/impl/netty/NettyNetworkHandlerFactory.kt
rename to mirai-core/src/commonMain/kotlin/network/impl/netty/NettyNetworkHandlerFactory.kt
index 5914000c5..874f1287e 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/impl/netty/NettyNetworkHandlerFactory.kt
+++ b/mirai-core/src/commonMain/kotlin/network/impl/netty/NettyNetworkHandlerFactory.kt
@@ -7,10 +7,10 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.impl.netty
+package net.mamoe.mirai.internal.network.impl.netty
 
+import net.mamoe.mirai.internal.network.handler.NetworkHandlerContext
 import net.mamoe.mirai.internal.network.handler.NetworkHandlerFactory
-import net.mamoe.mirai.internal.network.handler.context.NetworkHandlerContext
 import java.net.SocketAddress
 
 internal object NettyNetworkHandlerFactory : NetworkHandlerFactory<NettyNetworkHandler> {
diff --git a/mirai-core/src/commonMain/kotlin/network/handler/impl/netty/nettyUtils.kt b/mirai-core/src/commonMain/kotlin/network/impl/netty/nettyUtils.kt
similarity index 94%
rename from mirai-core/src/commonMain/kotlin/network/handler/impl/netty/nettyUtils.kt
rename to mirai-core/src/commonMain/kotlin/network/impl/netty/nettyUtils.kt
index ebbd331b8..314dd995a 100644
--- a/mirai-core/src/commonMain/kotlin/network/handler/impl/netty/nettyUtils.kt
+++ b/mirai-core/src/commonMain/kotlin/network/impl/netty/nettyUtils.kt
@@ -7,7 +7,7 @@
  *  https://github.com/mamoe/mirai/blob/master/LICENSE
  */
 
-package net.mamoe.mirai.internal.network.handler.impl.netty
+package net.mamoe.mirai.internal.network.impl.netty
 
 import io.netty.buffer.ByteBuf
 import io.netty.buffer.ByteBufInputStream
diff --git a/mirai-core/src/commonMain/kotlin/network/protocol/packet/PacketFactory.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/PacketFactory.kt
index c2d1e5593..f21ae7d84 100644
--- a/mirai-core/src/commonMain/kotlin/network/protocol/packet/PacketFactory.kt
+++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/PacketFactory.kt
@@ -13,7 +13,7 @@ import kotlinx.io.core.ByteReadPacket
 import net.mamoe.mirai.event.Event
 import net.mamoe.mirai.internal.QQAndroidBot
 import net.mamoe.mirai.internal.network.Packet
-import net.mamoe.mirai.internal.network.handler.components.PacketCodec
+import net.mamoe.mirai.internal.network.components.PacketCodec
 import net.mamoe.mirai.internal.network.protocol.packet.chat.*
 import net.mamoe.mirai.internal.network.protocol.packet.chat.image.ImgStore
 import net.mamoe.mirai.internal.network.protocol.packet.chat.image.LongConn
@@ -113,7 +113,7 @@ internal suspend inline fun <P : Packet?> IncomingPacketFactory<P>.decode(
  */
 @Deprecated(
     "Kept for binary compatibility.",
-    ReplaceWith("PacketCodec.PacketLogger", "net.mamoe.mirai.internal.network.handler.components.PacketCodec"),
+    ReplaceWith("PacketCodec.PacketLogger", "net.mamoe.mirai.internal.network.components.PacketCodec"),
     level = DeprecationLevel.ERROR,
 )
 @PublishedApi
diff --git a/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/MultiMsg.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/MultiMsg.kt
index cff53cab0..ab5c6054f 100644
--- a/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/MultiMsg.kt
+++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/MultiMsg.kt
@@ -19,7 +19,7 @@ import net.mamoe.mirai.internal.message.contextualBugReportException
 import net.mamoe.mirai.internal.message.toRichTextElems
 import net.mamoe.mirai.internal.network.Packet
 import net.mamoe.mirai.internal.network.QQAndroidClient
-import net.mamoe.mirai.internal.network.handler.components.PacketCodec
+import net.mamoe.mirai.internal.network.components.PacketCodec
 import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody
 import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm
 import net.mamoe.mirai.internal.network.protocol.data.proto.MsgTransmit
diff --git a/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/ConfigPushSvc.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/ConfigPushSvc.kt
index b1e9a5066..31dfd0926 100644
--- a/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/ConfigPushSvc.kt
+++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/ConfigPushSvc.kt
@@ -19,10 +19,10 @@ import net.mamoe.mirai.event.events.BotOfflineEvent
 import net.mamoe.mirai.internal.QQAndroidBot
 import net.mamoe.mirai.internal.message.contextualBugReportException
 import net.mamoe.mirai.internal.network.Packet
-import net.mamoe.mirai.internal.network.handler.components.BdhSessionSyncer
-import net.mamoe.mirai.internal.network.handler.components.ServerAddress
-import net.mamoe.mirai.internal.network.handler.components.ServerList
-import net.mamoe.mirai.internal.network.handler.context.BdhSession
+import net.mamoe.mirai.internal.network.components.BdhSessionSyncer
+import net.mamoe.mirai.internal.network.components.ServerAddress
+import net.mamoe.mirai.internal.network.components.ServerList
+import net.mamoe.mirai.internal.network.context.BdhSession
 import net.mamoe.mirai.internal.network.handler.logger
 import net.mamoe.mirai.internal.network.networkType
 import net.mamoe.mirai.internal.network.protocol.data.jce.FileStoragePushFSSvcList
diff --git a/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/StatSvc.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/StatSvc.kt
index 046d22ed8..e26d65054 100644
--- a/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/StatSvc.kt
+++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/StatSvc.kt
@@ -28,7 +28,7 @@ import net.mamoe.mirai.internal.contact.appId
 import net.mamoe.mirai.internal.contact.createOtherClient
 import net.mamoe.mirai.internal.message.contextualBugReportException
 import net.mamoe.mirai.internal.network.*
-import net.mamoe.mirai.internal.network.handler.components.ContactCacheService
+import net.mamoe.mirai.internal.network.components.ContactCacheService
 import net.mamoe.mirai.internal.network.protocol.data.jce.*
 import net.mamoe.mirai.internal.network.protocol.data.proto.Oidb0x769
 import net.mamoe.mirai.internal.network.protocol.data.proto.StatSvcGetOnline
diff --git a/mirai-core/src/commonTest/kotlin/network/ServerListTest.kt b/mirai-core/src/commonTest/kotlin/network/ServerListTest.kt
index eb6b39d4f..0ce8a8c20 100644
--- a/mirai-core/src/commonTest/kotlin/network/ServerListTest.kt
+++ b/mirai-core/src/commonTest/kotlin/network/ServerListTest.kt
@@ -9,9 +9,9 @@
 
 package net.mamoe.mirai.internal.network
 
-import net.mamoe.mirai.internal.network.handler.components.ServerAddress
-import net.mamoe.mirai.internal.network.handler.components.ServerList
-import net.mamoe.mirai.internal.network.handler.components.ServerListImpl
+import net.mamoe.mirai.internal.network.components.ServerAddress
+import net.mamoe.mirai.internal.network.components.ServerList
+import net.mamoe.mirai.internal.network.components.ServerListImpl
 import kotlin.test.*
 
 internal class ServerListTest {
diff --git a/mirai-core/src/commonTest/kotlin/network/component/ComponentKeyTest.kt b/mirai-core/src/commonTest/kotlin/network/component/ComponentKeyTest.kt
index 453fa9ca8..9f3ad8d13 100644
--- a/mirai-core/src/commonTest/kotlin/network/component/ComponentKeyTest.kt
+++ b/mirai-core/src/commonTest/kotlin/network/component/ComponentKeyTest.kt
@@ -9,7 +9,6 @@
 
 package net.mamoe.mirai.internal.network.component
 
-import net.mamoe.mirai.internal.network.handler.component.ComponentKey
 import org.junit.jupiter.api.Test
 import kotlin.test.assertEquals
 
diff --git a/mirai-core/src/commonTest/kotlin/network/component/ComponentStorageTest.kt b/mirai-core/src/commonTest/kotlin/network/component/ComponentStorageTest.kt
index fe79dc154..00293fb93 100644
--- a/mirai-core/src/commonTest/kotlin/network/component/ComponentStorageTest.kt
+++ b/mirai-core/src/commonTest/kotlin/network/component/ComponentStorageTest.kt
@@ -9,8 +9,6 @@
 
 package net.mamoe.mirai.internal.network.component
 
-import net.mamoe.mirai.internal.network.handler.component.ComponentKey
-import net.mamoe.mirai.internal.network.handler.component.ConcurrentComponentStorage
 import org.junit.jupiter.api.Test
 import kotlin.test.assertEquals
 
diff --git a/mirai-core/src/commonTest/kotlin/network/handler/AbstractNetworkHandlerTest.kt b/mirai-core/src/commonTest/kotlin/network/handler/AbstractNetworkHandlerTest.kt
index 93e4a5ec5..7be4e23b9 100644
--- a/mirai-core/src/commonTest/kotlin/network/handler/AbstractNetworkHandlerTest.kt
+++ b/mirai-core/src/commonTest/kotlin/network/handler/AbstractNetworkHandlerTest.kt
@@ -12,10 +12,10 @@
 package net.mamoe.mirai.internal.network.handler
 
 import net.mamoe.mirai.internal.MockBot
-import net.mamoe.mirai.internal.network.handler.component.ConcurrentComponentStorage
-import net.mamoe.mirai.internal.network.handler.components.SsoProcessor
-import net.mamoe.mirai.internal.network.handler.components.SsoProcessorImpl
-import net.mamoe.mirai.internal.network.handler.context.SsoProcessorContextImpl
+import net.mamoe.mirai.internal.network.component.ConcurrentComponentStorage
+import net.mamoe.mirai.internal.network.components.SsoProcessor
+import net.mamoe.mirai.internal.network.components.SsoProcessorImpl
+import net.mamoe.mirai.internal.network.context.SsoProcessorContextImpl
 import net.mamoe.mirai.internal.network.handler.state.LoggingStateObserver
 import net.mamoe.mirai.internal.network.handler.state.SafeStateObserver
 import net.mamoe.mirai.internal.network.handler.state.StateObserver
diff --git a/mirai-core/src/commonTest/kotlin/network/handler/testUtils.kt b/mirai-core/src/commonTest/kotlin/network/handler/testUtils.kt
index 2d730d067..e22f7230c 100644
--- a/mirai-core/src/commonTest/kotlin/network/handler/testUtils.kt
+++ b/mirai-core/src/commonTest/kotlin/network/handler/testUtils.kt
@@ -12,12 +12,11 @@ package net.mamoe.mirai.internal.network.handler
 import kotlinx.coroutines.CompletableDeferred
 import net.mamoe.mirai.internal.MockBot
 import net.mamoe.mirai.internal.QQAndroidBot
-import net.mamoe.mirai.internal.network.handler.component.ComponentStorage
-import net.mamoe.mirai.internal.network.handler.component.ConcurrentComponentStorage
-import net.mamoe.mirai.internal.network.handler.components.SsoProcessor
-import net.mamoe.mirai.internal.network.handler.components.SsoProcessorImpl
-import net.mamoe.mirai.internal.network.handler.context.NetworkHandlerContext
-import net.mamoe.mirai.internal.network.handler.context.SsoProcessorContextImpl
+import net.mamoe.mirai.internal.network.component.ComponentStorage
+import net.mamoe.mirai.internal.network.component.ConcurrentComponentStorage
+import net.mamoe.mirai.internal.network.components.SsoProcessor
+import net.mamoe.mirai.internal.network.components.SsoProcessorImpl
+import net.mamoe.mirai.internal.network.context.SsoProcessorContextImpl
 import net.mamoe.mirai.internal.network.handler.state.LoggingStateObserver
 import net.mamoe.mirai.internal.network.handler.state.SafeStateObserver
 import net.mamoe.mirai.internal.network.handler.state.StateObserver
diff --git a/mirai-core/src/commonTest/kotlin/network/sessionUtils.kt b/mirai-core/src/commonTest/kotlin/network/sessionUtils.kt
index 31b753df0..8794204db 100644
--- a/mirai-core/src/commonTest/kotlin/network/sessionUtils.kt
+++ b/mirai-core/src/commonTest/kotlin/network/sessionUtils.kt
@@ -11,9 +11,9 @@ package net.mamoe.mirai.internal.network
 
 import net.mamoe.mirai.event.events.BotOnlineEvent
 import net.mamoe.mirai.internal.QQAndroidBot
-import net.mamoe.mirai.internal.network.handler.context.AccountSecrets
-import net.mamoe.mirai.internal.network.handler.context.AccountSecretsImpl
-import net.mamoe.mirai.internal.network.handler.context.SsoSession
+import net.mamoe.mirai.internal.network.context.AccountSecrets
+import net.mamoe.mirai.internal.network.context.AccountSecretsImpl
+import net.mamoe.mirai.internal.network.context.SsoSession
 import net.mamoe.mirai.internal.utils.crypto.ECDH
 import net.mamoe.mirai.internal.utils.io.serialization.loadAs
 import net.mamoe.mirai.internal.utils.io.serialization.toByteArray