From 5b534af4fe9b9db70c2ea70af2e64c4586d9682a Mon Sep 17 00:00:00 2001 From: Him188 Date: Sun, 27 Dec 2020 15:07:41 +0800 Subject: [PATCH] Extract GlobalEventChannel to separate file --- .../commonMain/kotlin/event/EventChannel.kt | 26 ++---------- .../kotlin/event/GlobalEventChannel.kt | 40 +++++++++++++++++++ 2 files changed, 44 insertions(+), 22 deletions(-) create mode 100644 mirai-core-api/src/commonMain/kotlin/event/GlobalEventChannel.kt diff --git a/mirai-core-api/src/commonMain/kotlin/event/EventChannel.kt b/mirai-core-api/src/commonMain/kotlin/event/EventChannel.kt index 33f721784..2f75a898c 100644 --- a/mirai-core-api/src/commonMain/kotlin/event/EventChannel.kt +++ b/mirai-core-api/src/commonMain/kotlin/event/EventChannel.kt @@ -9,6 +9,10 @@ @file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE", "MemberVisibilityCanBePrivate", "unused") +@file:JvmMultifileClass +@file:JvmName("EventChannelKt") + + package net.mamoe.mirai.event import kotlinx.coroutines.* @@ -30,28 +34,6 @@ import kotlin.coroutines.suspendCoroutine import kotlin.internal.LowPriorityInOverloadResolution import kotlin.reflect.KClass -/** - * 在此 [CoroutineScope] 下创建一个监听所有事件的 [EventChannel]. 相当于 `GlobalEventChannel.parentScope(this).context(coroutineContext)`. - * - * 在返回的 [EventChannel] 中的事件监听器都会以 [this] 作为父协程作用域. 即会 使用 [this] - * - * @param coroutineContext 额外的 [CoroutineContext] - * - * @throws IllegalStateException 当 [this] 和 [coroutineContext] 均不包含 [CoroutineContext] - */ -@JvmSynthetic -public fun CoroutineScope.globalEventChannel(coroutineContext: CoroutineContext = EmptyCoroutineContext): EventChannel { - return if (coroutineContext === EmptyCoroutineContext) GlobalEventChannel.parentScope(this) - else GlobalEventChannel.parentScope(this).context(coroutineContext) -} - -/** - * 全局事件通道. 此通道包含来自所有 [Bot] 的所有类型的事件. 可通过 [EventChannel.filter] 过滤得到范围更小的 [EventChannel]. - * - * @see EventChannel - */ -public object GlobalEventChannel : EventChannel(Event::class, EmptyCoroutineContext) - /** * 事件通道. 事件通道是监听事件的入口. **在不同的事件通道中可以监听到不同类型的事件**. * diff --git a/mirai-core-api/src/commonMain/kotlin/event/GlobalEventChannel.kt b/mirai-core-api/src/commonMain/kotlin/event/GlobalEventChannel.kt new file mode 100644 index 000000000..289925776 --- /dev/null +++ b/mirai-core-api/src/commonMain/kotlin/event/GlobalEventChannel.kt @@ -0,0 +1,40 @@ +/* + * Copyright 2019-2020 Mamoe Technologies and contributors. + * + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * + * https://github.com/mamoe/mirai/blob/master/LICENSE + */ + +@file:JvmMultifileClass +@file:JvmName("EventChannelKt") + +package net.mamoe.mirai.event + +import kotlinx.coroutines.CoroutineScope +import net.mamoe.mirai.Bot +import kotlin.coroutines.CoroutineContext +import kotlin.coroutines.EmptyCoroutineContext + +/** + * 全局事件通道. 此通道包含来自所有 [Bot] 的所有类型的事件. 可通过 [EventChannel.filter] 过滤得到范围更小的 [EventChannel]. + * + * @see EventChannel + */ +public object GlobalEventChannel : EventChannel(Event::class, EmptyCoroutineContext) + +/** + * 在此 [CoroutineScope] 下创建一个监听所有事件的 [EventChannel]. 相当于 `GlobalEventChannel.parentScope(this).context(coroutineContext)`. + * + * 在返回的 [EventChannel] 中的事件监听器都会以 [this] 作为父协程作用域. 即会 使用 [this] + * + * @param coroutineContext 额外的 [CoroutineContext] + * + * @throws IllegalStateException 当 [this] 和 [coroutineContext] 均不包含 [CoroutineContext] + */ +@JvmSynthetic +public fun CoroutineScope.globalEventChannel(coroutineContext: CoroutineContext = EmptyCoroutineContext): EventChannel { + return if (coroutineContext === EmptyCoroutineContext) GlobalEventChannel.parentScope(this) + else GlobalEventChannel.parentScope(this).context(coroutineContext) +}