public ServerSingletonPreambleConnectionReader(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.ServerSingletonPreambleCallback callback) : base(connection, closedCallback)
 {
     this.decoder  = new Microsoft.ServiceBus.Channels.ServerSingletonDecoder(streamPosition, base.MaxViaSize, base.MaxContentTypeSize);
     this.offset   = offset;
     this.size     = size;
     this.callback = callback;
     this.transportSettingsCallback  = transportSettingsCallback;
     this.rawConnection              = connection;
     base.ConnectionDequeuedCallback = connectionDequeuedCallback;
 }
 private void OnSingletonConnection(Microsoft.ServiceBus.Channels.IConnection connection, Action connectionDequeuedCallback, long streamPosition, int offset, int size, TimeSpan timeout)
 {
     if (this.onSingletonPreambleKnown == null)
     {
         this.onSingletonPreambleKnown = new Microsoft.ServiceBus.Channels.ServerSingletonPreambleCallback(this.OnSingletonPreambleKnown);
     }
     Microsoft.ServiceBus.Channels.ServerSingletonPreambleConnectionReader serverSingletonPreambleConnectionReader = new Microsoft.ServiceBus.Channels.ServerSingletonPreambleConnectionReader(connection, connectionDequeuedCallback, streamPosition, offset, size, this.transportSettingsCallback, this.onConnectionClosed, this.onSingletonPreambleKnown);
     lock (this.ThisLock)
     {
         if (!this.isClosed)
         {
             this.connectionReaders.Add(serverSingletonPreambleConnectionReader);
         }
         else
         {
             serverSingletonPreambleConnectionReader.Dispose();
             return;
         }
     }
     serverSingletonPreambleConnectionReader.StartReading(this.viaDelegate, timeout);
 }