public DuplexRequestSessionChannel(DuplexRequestBindingElement.DuplexRequestChannelFactory channelFactory, IDuplexSessionChannel innerChannel) : base(channelFactory)
 {
     this.innerChannel            = innerChannel;
     this.includeExceptionDetails = channelFactory.BindingElement.IncludeExceptionDetails;
     this.inflightRequests        = new ConcurrentDictionary <UniqueId, DuplexRequestBindingElement.DuplexRequestSessionChannel.DuplexCorrelationAsyncResult>();
     this.onInnerChannelFaulted   = new EventHandler(this.OnInnerChannelFaulted);
     this.clientMode          = channelFactory.BindingElement.ClientMode;
     this.messageVersion      = innerChannel.GetProperty <MessageVersion>();
     this.serverShutdownEvent = new ManualResetEvent(false);
     if (this.clientMode)
     {
         this.pingTimer = new IOThreadTimer(DuplexRequestBindingElement.DuplexRequestSessionChannel.beginPing, this, true);
     }
 }
 public override T GetProperty <T>()
 {
     return(innerChannel.GetProperty <T>());
 }