<PackageReference Include="System.ServiceModel.Http" Version="6.0.0-rc.23205.4" />

System.ServiceModel.Channels.TransportDuplexSessionChannel

namespace System.ServiceModel.Channels { internal abstract class TransportDuplexSessionChannel { public class ConnectionDuplexSession { public string Id { get; } public TransportDuplexSessionChannel Channel { get; } public ConnectionDuplexSession(TransportDuplexSessionChannel channel); public IAsyncResult BeginCloseOutputSession(AsyncCallback callback, object state); public IAsyncResult BeginCloseOutputSession(TimeSpan timeout, AsyncCallback callback, object state); public void EndCloseOutputSession(IAsyncResult result); public void CloseOutputSession(); public void CloseOutputSession(TimeSpan timeout); public Task CloseOutputSessionAsync(); public Task CloseOutputSessionAsync(TimeSpan timeout); } public EndpointAddress LocalAddress { get; } public SecurityMessageProperty RemoteSecurity { get; set; } public IDuplexSession Session { get; set; } protected SemaphoreSlim SendLock { get; } protected BufferManager BufferManager { get; } protected MessageEncoder MessageEncoder { get; set; } protected abstract bool IsStreamedOutput { get; } IAsyncDuplexSession Session { get; } protected TransportDuplexSessionChannel(ChannelManagerBase manager, ITransportFactorySettings settings, EndpointAddress localAddress, Uri localVia, EndpointAddress remoteAddress, Uri via); public Message Receive(); public Message Receive(TimeSpan timeout); public Task<Message> ReceiveAsync(); public Task<Message> ReceiveAsync(TimeSpan timeout); public IAsyncResult BeginReceive(AsyncCallback callback, object state); public IAsyncResult BeginReceive(TimeSpan timeout, AsyncCallback callback, object state); public Message EndReceive(IAsyncResult result); public IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state); public bool EndTryReceive(IAsyncResult result, out Message message); public Task<(bool, Message)> TryReceiveAsync(TimeSpan timeout); public bool TryReceive(TimeSpan timeout, 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); protected void SetMessageSource(IMessageSource messageSource); protected abstract Task CloseOutputSessionCoreAsync(TimeSpan timeout); protected abstract void CloseOutputSessionCore(TimeSpan timeout); protected Task CloseOutputSessionAsync(TimeSpan timeout); protected void CloseOutputSession(TimeSpan timeout); protected abstract void ReturnConnectionIfNecessary(bool abort, TimeSpan timeout); protected virtual void OnReceiveMessage(Message message); protected void ApplyChannelBinding(Message message); protected virtual void PrepareMessage(Message message); protected abstract AsyncCompletionResult StartWritingBufferedMessage(Message message, ArraySegment<byte> messageData, bool allowOutputBatching, TimeSpan timeout, Action<object> callback, object state); protected abstract AsyncCompletionResult BeginCloseOutput(TimeSpan timeout, Action<object> callback, object state); protected virtual void FinishWritingMessage(); protected abstract ArraySegment<byte> EncodeMessage(Message message); protected abstract void OnSendCore(Message message, TimeSpan timeout); protected abstract AsyncCompletionResult StartWritingStreamedMessage(Message message, TimeSpan timeout, Action<object> callback, object state); protected abstract void CompleteClose(TimeSpan timeout); } }