System.ServiceModel.Channels.TransportDuplexSessionChannel
abstract class TransportDuplexSessionChannel : TransportOutputChannel, IDuplexSessionChannel, IDuplexChannel, IInputChannel, IChannel, ICommunicationObject, IOutputChannel, ISessionChannel<IDuplexSession>, IAsyncDuplexSessionChannel, IAsyncDuplexChannel, IAsyncInputChannel, IAsyncCommunicationObject, IAsyncOutputChannel, ISessionChannel<IAsyncDuplexSession>
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);
}
}