Introduce derived types of MultiPacket

This commit is contained in:
Him188 2020-02-29 23:26:15 +08:00
parent 6a85769e0d
commit 26c4d530ba

View File

@ -29,8 +29,19 @@ object NoPacket : Packet {
/**
* PacketFactory 可以一次解析多个包出来. 它们将会被分别广播.
*/
open class MultiPacket<P : Packet>(internal val delegate: List<P>) : List<P> by delegate, Packet {
interface MultiPacket<out P : Packet> : Packet, Iterable<P>
class MultiPacketByIterable<out P : Packet>(internal val delegate: Iterable<P>) : MultiPacket<P>,
Iterable<P> by delegate {
override fun toString(): String {
return "MultiPacket<${this.firstOrNull()?.let { it::class.simpleName } ?: "?"}>"
return "MultiPacket"
}
}
class MultiPacketBySequence<out P : Packet>(internal val delegate: Sequence<P>) : MultiPacket<P> {
override operator fun iterator(): Iterator<P> = delegate.iterator()
override fun toString(): String {
return "MultiPacket"
}
}