2 // DuplexSessionChannelBase.cs
5 // Marcos Cobena (marcoscobena@gmail.com)
7 // Copyright 2007 Marcos Cobena (http://www.youcannoteatbits.org/)
11 using System.ServiceModel.Channels;
13 namespace System.ServiceModel.Channels
15 internal abstract class DuplexChannelBase : ChannelBase, IDuplexChannel
17 ChannelFactoryBase channel_factory_base;
18 ChannelListenerBase channel_listener_base;
19 EndpointAddress local_address;
20 EndpointAddress remote_address;
23 public DuplexChannelBase (ChannelFactoryBase factory) : base (factory)
25 channel_factory_base = factory;
28 public DuplexChannelBase (ChannelListenerBase listener) : base (listener)
30 channel_listener_base = listener;
33 public abstract EndpointAddress LocalAddress { get; }
35 public abstract EndpointAddress RemoteAddress { get; }
37 public abstract Uri Via { get; }
39 public abstract IAsyncResult BeginSend (Message message, AsyncCallback callback, object state);
41 public abstract IAsyncResult BeginSend (Message message, TimeSpan timeout, AsyncCallback callback, object state);
43 public abstract void EndSend (IAsyncResult result);
45 public abstract void Send (Message message);
47 public abstract void Send (Message message, TimeSpan timeout);
49 public abstract IAsyncResult BeginReceive (AsyncCallback callback, object state);
51 public abstract IAsyncResult BeginReceive (TimeSpan timeout, AsyncCallback callback, object state);
53 public abstract IAsyncResult BeginTryReceive (TimeSpan timeout, AsyncCallback callback, object state);
55 public abstract IAsyncResult BeginWaitForMessage (TimeSpan timeout, AsyncCallback callback, object state);
57 public abstract Message EndReceive (IAsyncResult result);
59 public abstract bool EndTryReceive (IAsyncResult result, out Message message);
61 public abstract bool EndWaitForMessage (IAsyncResult result);
63 public abstract Message Receive ();
65 public abstract Message Receive (TimeSpan timeout);
67 public abstract bool TryReceive (TimeSpan timeout, out Message message);
69 public abstract bool WaitForMessage (TimeSpan timeout);