All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.org.ton.api.adnl.message.AdnlMessage.kt Maven / Gradle / Ivy

@file:Suppress("OPT_IN_USAGE")

package org.ton.api.adnl.message

import kotlinx.serialization.Polymorphic
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonClassDiscriminator
import org.ton.tl.TlCodec
import org.ton.tl.TlCombinator
import org.ton.tl.TlObject

@Polymorphic
@Serializable
@JsonClassDiscriminator("@type")
public sealed interface AdnlMessage : TlObject {
    override fun tlCodec(): TlCodec = Companion

    public companion object : TlCombinator(
        AdnlMessage::class,
        AdnlMessageQuery::class to AdnlMessageQuery,
        AdnlMessageAnswer::class to AdnlMessageAnswer,
        AdnlMessageCreateChannel::class to AdnlMessageCreateChannel,
        AdnlMessageConfirmChannel::class to AdnlMessageConfirmChannel,
        AdnlMessageCustom::class to AdnlMessageCustom,
        AdnlMessageNop::class to AdnlMessageNop,
        AdnlMessageReinit::class to AdnlMessageReinit,
        AdnlMessagePart::class to AdnlMessagePart.tlConstructor(),
    ) {
        public fun sizeOf(message: AdnlMessage): Int = Int.SIZE_BYTES + when (message) {
            is AdnlMessageQuery -> AdnlMessageQuery.sizeOf(message)
            is AdnlMessageAnswer -> AdnlMessageAnswer.sizeOf(message)
            is AdnlMessageCreateChannel -> AdnlMessageCreateChannel.SIZE_BYTES
            is AdnlMessageConfirmChannel -> AdnlMessageConfirmChannel.SIZE_BYTES
            is AdnlMessageCustom -> AdnlMessageCustom.sizeOf(message)
            is AdnlMessageNop -> AdnlMessageNop.SIZE_BYTES
            is AdnlMessageReinit -> AdnlMessageReinit.SIZE_BYTES
            is AdnlMessagePart -> AdnlMessagePart.sizeOf(message)
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy