using System; using System.Threading; using System.Threading.Tasks; namespace Capnp.Rpc { /// /// Null skeleton /// public sealed class NullSkeleton : Skeleton { /// /// Singleton instance /// public static readonly NullSkeleton Instance = new NullSkeleton(); NullSkeleton() { } /// /// Always throws an exception /// /// always thrown public override Task Invoke(ulong interfaceId, ushort methodId, DeserializerState args, CancellationToken cancellationToken = default) { args.Dispose(); throw new InvalidOperationException("Cannot call null capability"); } internal override ConsumedCapability AsCapability() => NullCapability.Instance; internal override void Claim() { } internal override void Relinquish() { } } }