public ServerSessionPreambleConnectionReader(Microsoft.ServiceBus.Channels.IConnection connection, Action connectionDequeuedCallback, long streamPosition, int offset, int size, Microsoft.ServiceBus.Channels.TransportSettingsCallback transportSettingsCallback, Microsoft.ServiceBus.Channels.ConnectionClosedCallback closedCallback, Microsoft.ServiceBus.Channels.ServerSessionPreambleCallback callback) : base(connection, closedCallback)
 {
     this.rawConnection              = connection;
     this.decoder                    = new Microsoft.ServiceBus.Channels.ServerSessionDecoder(streamPosition, base.MaxViaSize, base.MaxContentTypeSize);
     this.offset                     = offset;
     this.size                       = size;
     this.transportSettingsCallback  = transportSettingsCallback;
     this.callback                   = callback;
     base.ConnectionDequeuedCallback = connectionDequeuedCallback;
 }
 private void OnDuplexConnection(Microsoft.ServiceBus.Channels.IConnection connection, Action connectionDequeuedCallback, long streamPosition, int offset, int size, TimeSpan timeout)
 {
     if (this.onSessionPreambleKnown == null)
     {
         this.onSessionPreambleKnown = new Microsoft.ServiceBus.Channels.ServerSessionPreambleCallback(this.OnSessionPreambleKnown);
     }
     Microsoft.ServiceBus.Channels.ServerSessionPreambleConnectionReader serverSessionPreambleConnectionReader = new Microsoft.ServiceBus.Channels.ServerSessionPreambleConnectionReader(connection, connectionDequeuedCallback, streamPosition, offset, size, this.transportSettingsCallback, this.onConnectionClosed, this.onSessionPreambleKnown);
     lock (this.ThisLock)
     {
         if (!this.isClosed)
         {
             this.connectionReaders.Add(serverSessionPreambleConnectionReader);
         }
         else
         {
             serverSessionPreambleConnectionReader.Dispose();
             return;
         }
     }
     serverSessionPreambleConnectionReader.StartReading(this.viaDelegate, timeout);
 }