1
1
/*
2
- * Copyright 2019-2021 Mamoe Technologies and contributors.
2
+ * Copyright 2019-2022 Mamoe Technologies and contributors.
3
3
*
4
- * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
5
- * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
4
+ * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
5
+ * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
6
6
*
7
- * https://github.com/mamoe/mirai/blob/master /LICENSE
7
+ * https://github.com/mamoe/mirai/blob/dev /LICENSE
8
8
*/
9
9
10
10
@file:OptIn(ConsoleExperimentalApi ::class )
11
11
12
12
package net.mamoe.mirai.console.internal
13
13
14
14
import kotlinx.coroutines.CoroutineExceptionHandler
15
- import kotlinx.coroutines.CoroutineScope
16
15
import kotlinx.coroutines.Job
17
16
import kotlinx.coroutines.runBlocking
18
17
import me.him188.kotlin.dynamic.delegation.dynamicDelegation
@@ -32,8 +31,8 @@ import net.mamoe.mirai.console.internal.data.builtins.AutoLoginConfig.Account.Co
32
31
import net.mamoe.mirai.console.internal.data.builtins.AutoLoginConfig.Account.PasswordKind.MD5
33
32
import net.mamoe.mirai.console.internal.data.builtins.AutoLoginConfig.Account.PasswordKind.PLAIN
34
33
import net.mamoe.mirai.console.internal.data.builtins.LoggerConfig
35
- import net.mamoe.mirai.console.internal.extension.SingletonExtensionSelectorImpl
36
34
import net.mamoe.mirai.console.internal.extension.GlobalComponentStorage
35
+ import net.mamoe.mirai.console.internal.extension.SingletonExtensionSelectorImpl
37
36
import net.mamoe.mirai.console.internal.logging.LoggerControllerImpl
38
37
import net.mamoe.mirai.console.internal.logging.MiraiConsoleLogger
39
38
import net.mamoe.mirai.console.internal.permission.BuiltInPermissionService
@@ -44,7 +43,6 @@ import net.mamoe.mirai.console.permission.PermissionService
44
43
import net.mamoe.mirai.console.permission.PermissionService.Companion.permit
45
44
import net.mamoe.mirai.console.permission.RootPermission
46
45
import net.mamoe.mirai.console.plugin.PluginManager
47
- import net.mamoe.mirai.console.plugin.center.PluginCenter
48
46
import net.mamoe.mirai.console.plugin.name
49
47
import net.mamoe.mirai.console.util.ConsoleExperimentalApi
50
48
import net.mamoe.mirai.console.util.ConsoleInput
@@ -65,12 +63,12 @@ internal val MiraiConsole.pluginManagerImpl: PluginManagerImpl get() = this.plug
65
63
* [MiraiConsole] 公开 API 与前端实现的连接桥.
66
64
*/
67
65
@Suppress(" SpellCheckingInspection" )
68
- internal object MiraiConsoleImplementationBridge : CoroutineScope,
69
- MiraiConsoleImplementation by (dynamicDelegation { MiraiConsoleImplementation .getInstance() }) ,
70
- MiraiConsole {
71
- override val pluginCenter : PluginCenter get() = throw UnsupportedOperationException ( " PluginCenter is not supported yet " )
72
-
73
- private val instance : MiraiConsoleImplementation get() = MiraiConsoleImplementation .getInstance()
66
+ internal class MiraiConsoleImplementationBridge (
67
+ private val externalImplementation : MiraiConsoleImplementation ,
68
+ ) : MiraiConsole,
69
+ MiraiConsoleImplementation by (dynamicDelegation( MiraiConsoleImplementationBridge ::externalImplementation)) {
70
+ override val origin : MiraiConsoleImplementation
71
+ get() = externalImplementation
74
72
75
73
// FIXME: 12/12/2021 Workaround for compiler regression, should remove when using Kotlin compiller 1.6.20
76
74
private operator fun <V > KProperty0<V>.getValue (thisRef : Any? , property : KProperty <* >): V = this .get()
@@ -81,8 +79,6 @@ internal object MiraiConsoleImplementationBridge : CoroutineScope,
81
79
82
80
override val mainLogger: MiraiLogger by lazy { createLogger(" main" ) }
83
81
84
- override val consoleLaunchOptions: MiraiConsoleImplementation .ConsoleLaunchOptions get() = MiraiConsoleImplementation .options
85
-
86
82
init {
87
83
// TODO: Replace to standard api
88
84
@Suppress(" INVISIBLE_MEMBER" , " INVISIBLE_REFERENCE" )
@@ -96,12 +92,12 @@ internal object MiraiConsoleImplementationBridge : CoroutineScope,
96
92
97
93
override fun createLogger (identity : String? ): MiraiLogger {
98
94
val controller = loggerController
99
- return MiraiConsoleLogger (controller, instance .createLogger(identity))
95
+ return MiraiConsoleLogger (controller, externalImplementation .createLogger(identity))
100
96
}
101
97
102
98
@Suppress(" RemoveRedundantBackticks" )
103
99
internal fun doStart () {
104
- instance .preStart()
100
+ externalImplementation .preStart()
105
101
106
102
phase(" setup logger controller" ) {
107
103
if (loggerController == = LoggerControllerImpl ) {
@@ -267,7 +263,7 @@ internal object MiraiConsoleImplementationBridge : CoroutineScope,
267
263
}
268
264
}
269
265
270
- instance .postStart()
266
+ externalImplementation .postStart()
271
267
272
268
mainLogger.info { " mirai-console started successfully." }
273
269
}
@@ -291,10 +287,10 @@ internal object MiraiConsoleImplementationBridge : CoroutineScope,
291
287
}
292
288
293
289
override fun prePhase (phase : String ) {
294
- instance .prePhase(phase)
290
+ externalImplementation .prePhase(phase)
295
291
}
296
292
297
293
override fun postPhase (phase : String ) {
298
- instance .postPhase(phase)
294
+ externalImplementation .postPhase(phase)
299
295
}
300
296
}
0 commit comments