<PackageReference Include="System.ServiceModel.Primitives" Version="6.1.0" />

System.ServiceModel.Channels.DuplexChannel

namespace System.ServiceModel.Channels { internal abstract class DuplexChannel : InputQueueChannel<Message>, IDuplexChannel, IInputChannel, IChannel, ICommunicationObject, IOutputChannel, IAsyncDuplexChannel, IAsyncInputChannel, IAsyncCommunicationObject, IAsyncOutputChannel { public virtual EndpointAddress LocalAddress { get; } public abstract EndpointAddress RemoteAddress { get; } public abstract Uri Via { get; } protected DuplexChannel(ChannelManagerBase channelManager, EndpointAddress localAddress); public Task SendAsync(Message message); public Task SendAsync(Message message, TimeSpan timeout); public IAsyncResult BeginSend(Message message, AsyncCallback callback, object state); public IAsyncResult BeginSend(Message message, TimeSpan timeout, AsyncCallback callback, object state); public void EndSend(IAsyncResult result); protected abstract Task OnSendAsync(Message message, TimeSpan timeout); public void Send(Message message); public void Send(Message message, TimeSpan timeout); protected virtual void AddHeadersTo(Message message); public Task<Message> ReceiveAsync(); public Task<Message> ReceiveAsync(TimeSpan timeout); public Message Receive(); public Message Receive(TimeSpan timeout); public IAsyncResult BeginReceive(AsyncCallback callback, object state); public IAsyncResult BeginReceive(TimeSpan timeout, AsyncCallback callback, object state); public Message EndReceive(IAsyncResult result); public Task<(bool, Message)> TryReceiveAsync(TimeSpan timeout); public bool TryReceive(TimeSpan timeout, out Message message); public IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state); public bool EndTryReceive(IAsyncResult result, out Message message); public Task<bool> WaitForMessageAsync(TimeSpan timeout); public bool WaitForMessage(TimeSpan timeout); public IAsyncResult BeginWaitForMessage(TimeSpan timeout, AsyncCallback callback, object state); public bool EndWaitForMessage(IAsyncResult result); } }