using System; namespace Capnp.Rpc { /// /// Null capability /// public sealed class NullCapability : ConsumedCapability { /// /// Singleton instance /// public static readonly NullCapability Instance = new NullCapability(); NullCapability() { } /// /// Does nothing /// protected override void ReleaseRemotely() { } internal override void AddRef() { } internal override Skeleton AsSkeleton() => NullSkeleton.Instance; internal override IPromisedAnswer DoCall(ulong interfaceId, ushort methodId, DynamicSerializerState args) { args.Dispose(); throw new InvalidOperationException("Cannot call null capability"); } internal override Action? Export(IRpcEndpoint endpoint, CapDescriptor.WRITER writer) { writer.which = CapDescriptor.WHICH.None; return null; } internal override void Release() { } /// /// String hint /// /// "Null capability" public override string ToString() => "Null capability"; } }