mirror of
https://github.com/mamoe/mirai.git
synced 2025-04-25 04:50:26 +08:00
Fix MessageProtocol loading
This commit is contained in:
parent
aabcff628a
commit
900a7ed92d
mirai-core-utils/src/nativeMain/kotlin
mirai-core/src/commonMain/kotlin
@ -38,7 +38,7 @@ public object Services {
|
||||
}
|
||||
}
|
||||
|
||||
public fun implementations(baseClass: String): List<Any>? {
|
||||
public fun implementations(baseClass: String): List<Lazy<Any>>? {
|
||||
lock.withLock {
|
||||
return registered[baseClass]?.map { it.instance }
|
||||
}
|
||||
@ -66,7 +66,7 @@ public actual fun <T : Any> loadService(
|
||||
?: error("Could not load service '${clazz.qualifiedName ?: clazz}'. Current services: ${Services.print()}")
|
||||
|
||||
public actual fun <T : Any> loadServices(clazz: KClass<out T>): Sequence<T> =
|
||||
Services.implementations(qualifiedNameOrFail(clazz))?.asSequence().orEmpty().castUp()
|
||||
Services.implementations(qualifiedNameOrFail(clazz))?.asSequence()?.map { it.value }.orEmpty().castUp()
|
||||
|
||||
private fun <T : Any> qualifiedNameOrFail(clazz: KClass<out T>) =
|
||||
clazz.qualifiedName ?: error("Could not find qualifiedName for $clazz")
|
@ -30,6 +30,7 @@ internal abstract class MessageProtocol(
|
||||
}
|
||||
|
||||
fun collectProcessors(processorCollector: ProcessorCollector) {
|
||||
println("collectProcessors, this=$this, class=${this::class}")
|
||||
processorCollector.collectProcessorsImpl()
|
||||
}
|
||||
|
||||
|
@ -172,8 +172,10 @@ internal class MessageProtocolFacadeImpl(
|
||||
val instances = protocols
|
||||
.sortedWith(MessageProtocol.PriorityComparator.reversed())
|
||||
for (instance in instances) {
|
||||
println("instance: $instance, class=${instance::class}")
|
||||
instance.collectProcessors(object : ProcessorCollector() {
|
||||
override fun <T : SingleMessage> add(encoder: MessageEncoder<T>, elementType: KClass<T>) {
|
||||
println("add: $encoder, $elementType")
|
||||
this@MessageProtocolFacadeImpl.encoderPipeline.registerProcessor(
|
||||
MessageEncoderProcessor(
|
||||
encoder,
|
||||
@ -183,22 +185,27 @@ internal class MessageProtocolFacadeImpl(
|
||||
}
|
||||
|
||||
override fun add(decoder: MessageDecoder) {
|
||||
println("add: $decoder")
|
||||
this@MessageProtocolFacadeImpl.decoderPipeline.registerProcessor(MessageDecoderProcessor(decoder))
|
||||
}
|
||||
|
||||
override fun add(preprocessor: OutgoingMessagePreprocessor) {
|
||||
println("add: $preprocessor")
|
||||
preprocessorPipeline.registerProcessor(OutgoingMessageProcessorAdapter(preprocessor))
|
||||
}
|
||||
|
||||
override fun add(transformer: OutgoingMessageTransformer) {
|
||||
println("add: $transformer")
|
||||
outgoingPipeline.registerProcessor(OutgoingMessageProcessorAdapter(transformer))
|
||||
}
|
||||
|
||||
override fun add(sender: OutgoingMessageSender) {
|
||||
println("add: $sender")
|
||||
outgoingPipeline.registerProcessor(OutgoingMessageProcessorAdapter(sender))
|
||||
}
|
||||
|
||||
override fun add(postprocessor: OutgoingMessagePostprocessor) {
|
||||
println("add: $postprocessor")
|
||||
outgoingPipeline.registerProcessor(OutgoingMessageProcessorAdapter(postprocessor))
|
||||
}
|
||||
})
|
||||
|
@ -9,7 +9,6 @@
|
||||
|
||||
package net.mamoe.mirai.internal.pipeline
|
||||
|
||||
import io.ktor.util.collections.*
|
||||
import io.ktor.utils.io.core.*
|
||||
import net.mamoe.mirai.internal.message.contextualBugReportException
|
||||
import net.mamoe.mirai.internal.message.protocol.outgoing.OutgoingMessagePipelineContext
|
||||
@ -202,8 +201,10 @@ protected constructor(
|
||||
override val processors: MutableDeque<ProcessorBox<P>> = ConcurrentLinkedDeque()
|
||||
|
||||
override fun registerProcessor(processor: P): ProcessorPipeline.DisposableRegistry {
|
||||
println("registerProcessor: $processor")
|
||||
val box = ProcessorBox(processor)
|
||||
processors.add(box)
|
||||
println("processors.add fin")
|
||||
return ProcessorPipeline.DisposableRegistry {
|
||||
processors.remove(box)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user