using System; namespace Capnp.Rpc { /// /// Base class for a low-level capability at consumer side. It is created by the . An application does not directly interact with it /// (which is intentionally impossible, since the invocation method is internal), but instead uses a -derived wrapper. /// public abstract class ConsumedCapability { internal abstract IPromisedAnswer DoCall(ulong interfaceId, ushort methodId, DynamicSerializerState args); /// /// Request the RPC engine to release this capability from its import table, /// which usually also means to remove it from the remote peer's export table. /// protected abstract void ReleaseRemotely(); internal abstract Action? Export(IRpcEndpoint endpoint, CapDescriptor.WRITER writer); internal abstract void AddRef(); internal abstract void Release(); internal abstract Skeleton AsSkeleton(); #if DebugFinalizers internal Proxy? OwningProxy { get; set; } internal ConsumedCapability? ResolvingCap { get; set; } #endif } }