Shamrock: fix GlobalEventTransmitter x2

This commit is contained in:
白池 2024-02-11 14:28:07 +08:00
parent 65f54360f8
commit 27b4c26da7

View File

@ -1,10 +1,15 @@
@file:OptIn(DelicateCoroutinesApi::class)
package moe.fuqiuluo.shamrock.remote.service.api package moe.fuqiuluo.shamrock.remote.service.api
import com.tencent.qqnt.kernel.nativeinterface.MsgElement import com.tencent.qqnt.kernel.nativeinterface.MsgElement
import com.tencent.qqnt.kernel.nativeinterface.MsgRecord import com.tencent.qqnt.kernel.nativeinterface.MsgRecord
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.channels.BufferOverflow
import kotlinx.coroutines.flow.FlowCollector import kotlinx.coroutines.flow.FlowCollector
import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.launch
import moe.fuqiuluo.qqinterface.servlet.BaseSvc import moe.fuqiuluo.qqinterface.servlet.BaseSvc
import moe.fuqiuluo.qqinterface.servlet.CardSvc import moe.fuqiuluo.qqinterface.servlet.CardSvc
import moe.fuqiuluo.qqinterface.servlet.GroupSvc import moe.fuqiuluo.qqinterface.servlet.GroupSvc
@ -557,20 +562,29 @@ internal object GlobalEventTransmitter: BaseSvc() {
@ShamrockDsl @ShamrockDsl
suspend inline fun onMessageEvent(collector: FlowCollector<Pair<MsgRecord, MessageEvent>>) { suspend inline fun onMessageEvent(collector: FlowCollector<Pair<MsgRecord, MessageEvent>>) {
messageEventFlow messageEventFlow.collect {
.collect(collector) GlobalScope.launch {
collector.emit(it)
}
}
} }
@ShamrockDsl @ShamrockDsl
suspend inline fun onNoticeEvent(collector: FlowCollector<NoticeEvent>) { suspend inline fun onNoticeEvent(collector: FlowCollector<NoticeEvent>) {
noticeEventFlow noticeEventFlow.collect {
.collect(collector) GlobalScope.launch {
collector.emit(it)
}
}
} }
@ShamrockDsl @ShamrockDsl
suspend inline fun onRequestEvent(collector: FlowCollector<RequestEvent>) { suspend inline fun onRequestEvent(collector: FlowCollector<RequestEvent>) {
requestEventFlow requestEventFlow.collect {
.collect(collector) GlobalScope.launch {
collector.emit(it)
}
}
} }
} }