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()
{
}
}
}