35 lines
1.4 KiB
C#
Raw Normal View History

2019-06-12 21:56:55 +02:00
using System;
using System.Threading;
using System.Threading.Tasks;
2020-01-11 17:21:31 +01:00
#nullable enable
2019-06-12 21:56:55 +02:00
namespace Capnp.Rpc
{
/// <summary>
/// Base class for a low-level capability at consumer side. It is created by the <see cref="RpcEngine"/>. An application does not directly interact with it
/// (which is intentionally impossible, since the invocation method is internal), but instead uses a <see cref="Proxy"/>-derived wrapper.
/// </summary>
public abstract class ConsumedCapability
{
internal abstract IPromisedAnswer DoCall(ulong interfaceId, ushort methodId, DynamicSerializerState args);
2019-06-12 21:56:55 +02:00
/// <summary>
/// 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.
/// </summary>
protected abstract void ReleaseRemotely();
internal abstract void Export(IRpcEndpoint endpoint, CapDescriptor.WRITER writer);
2020-01-11 17:21:31 +01:00
internal abstract void Freeze(out IRpcEndpoint? boundEndpoint);
2019-06-12 21:56:55 +02:00
internal abstract void Unfreeze();
internal abstract void AddRef();
internal abstract void Release();
#if DebugFinalizers
public string CreatorMemberName { get; set; }
public string CreatorFilePath { get; set; }
public int CreatorLineNumber { get; set; }
#endif
}
}
2020-01-11 17:21:31 +01:00
#nullable restore