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";
}
}