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); }