From 617b231865da835f3cb615658fb49e30a1f1beb1 Mon Sep 17 00:00:00 2001 From: Him188 Date: Fri, 14 Feb 2020 20:21:05 +0800 Subject: [PATCH] japt Events --- .../java/net/mamoe/mirai/japt/Events.java | 39 +++++++++++++++++++ .../mamoe/mirai/japt/internal/EventsImpl.kt | 16 +++----- 2 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 mirai-japt/src/main/java/net/mamoe/mirai/japt/Events.java rename mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/event/SubscribersJvm.kt => mirai-japt/src/main/kotlin/net/mamoe/mirai/japt/internal/EventsImpl.kt (57%) diff --git a/mirai-japt/src/main/java/net/mamoe/mirai/japt/Events.java b/mirai-japt/src/main/java/net/mamoe/mirai/japt/Events.java new file mode 100644 index 000000000..76d7af4e7 --- /dev/null +++ b/mirai-japt/src/main/java/net/mamoe/mirai/japt/Events.java @@ -0,0 +1,39 @@ +/* + * Copyright 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 + */ + +package net.mamoe.mirai.japt; + +import kotlinx.coroutines.GlobalScope; +import net.mamoe.mirai.event.Event; +import net.mamoe.mirai.event.Listener; +import net.mamoe.mirai.event.ListeningStatus; +import net.mamoe.mirai.event.internal.EventInternalJvmKt; +import net.mamoe.mirai.japt.internal.EventsImplKt; +import org.jetbrains.annotations.NotNull; + +import java.util.function.Consumer; +import java.util.function.Function; + +public final class Events { + + @NotNull + public static Listener subscribe(@NotNull Class eventClass, @NotNull Function onEvent) { + return EventInternalJvmKt._subscribeEventForJaptOnly(eventClass, GlobalScope.INSTANCE, onEvent); + } + + @NotNull + public static Listener subscribeAlways(@NotNull Class eventClass, @NotNull Consumer onEvent) { + return EventInternalJvmKt._subscribeEventForJaptOnly(eventClass, GlobalScope.INSTANCE, onEvent); + } + + @NotNull + public static E broadcast(@NotNull E event) { + return EventsImplKt.broadcast(event); + } +} \ No newline at end of file diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/event/SubscribersJvm.kt b/mirai-japt/src/main/kotlin/net/mamoe/mirai/japt/internal/EventsImpl.kt similarity index 57% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/event/SubscribersJvm.kt rename to mirai-japt/src/main/kotlin/net/mamoe/mirai/japt/internal/EventsImpl.kt index 9282eec6b..d2029bb2b 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/event/SubscribersJvm.kt +++ b/mirai-japt/src/main/kotlin/net/mamoe/mirai/japt/internal/EventsImpl.kt @@ -7,16 +7,10 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.event +package net.mamoe.mirai.japt.internal +import kotlinx.coroutines.runBlocking +import net.mamoe.mirai.event.Event +import net.mamoe.mirai.event.broadcast -// TODO 添加更多 -/** - * Jvm 调用实现(阻塞) - */ -object Events { - /* - @JvmStatic - fun subscribe(type: Class, handler: suspend (E) -> ListeningStatus) = - runBlocking { type.kotlin.subscribe(handler) }*/ -} +internal fun broadcast(e: E): E = runBlocking { e.broadcast() } \ No newline at end of file