+2009-08-17 Atsushi Enomoto <atsushi@ximian.com>
+
+ * ReplyChannelBase.cs, DuplexChannelBase.cs, RequestChannelBase.cs:
+ implement GetProperty<T>() and return its channel manager.
+
2009-08-17 Atsushi Enomoto <atsushi@ximian.com>
* PeerDuplexChannel.cs : ongoing implementation. Fix wrong peer
{
internal abstract class DuplexChannelBase : ChannelBase, IDuplexChannel
{
- //ChannelFactoryBase channel_factory_base;
- //ChannelListenerBase channel_listener_base;
+ ChannelFactoryBase channel_factory_base;
+ ChannelListenerBase channel_listener_base;
EndpointAddress local_address;
EndpointAddress remote_address;
Uri via;
public DuplexChannelBase (ChannelFactoryBase factory, EndpointAddress remoteAddress, Uri via) : base (factory)
{
- //channel_factory_base = factory;
+ channel_factory_base = factory;
remote_address = remoteAddress;
this.via = via;
SetupDelegates ();
public DuplexChannelBase (ChannelListenerBase listener) : base (listener)
{
- //channel_listener_base = listener;
+ channel_listener_base = listener;
local_address = new EndpointAddress (listener.Uri);
SetupDelegates ();
}
try_receive_handler = new TryReceiveHandler (TryReceive);
}
+ public override T GetProperty<T> ()
+ {
+ if (typeof (T) == typeof (IChannelFactory))
+ return (T) (object) channel_factory_base;
+ if (typeof (T) == typeof (IChannelListener))
+ return (T) (object) channel_listener_base;
+ return base.GetProperty<T> ();
+ }
+
// Open
Action<TimeSpan> open_handler;
{
}
+ ChannelListenerBase listener;
+
public abstract EndpointAddress LocalAddress { get; }
+ public override T GetProperty<T> ()
+ {
+ if (typeof (T) == typeof (IChannelListener))
+ return (T) (object) listener;
+ return base.GetProperty<T> ();
+ }
+
protected override void OnAbort ()
{
OnClose (TimeSpan.Zero);
get { return via ?? RemoteAddress.Uri; }
}
+ public override T GetProperty<T> ()
+ {
+ if (typeof (T) == typeof (IChannelFactory))
+ return (T) (object) channel_factory;
+ return base.GetProperty<T> ();
+ }
+
// Request
public Message Request (Message message)