private void OnReadHeaderComplete(TransportAsyncCallbackArgs args) { if (args.Exception != null) { CompleteOnException(args); return; } try { ProtocolHeader receivedHeader = new ProtocolHeader(); receivedHeader.Decode(new ByteBuffer(args.Buffer, args.Offset, args.Count)); if (!receivedHeader.Equals(_sentHeader)) { throw new AmqpException(AmqpErrorCode.NotImplemented, $"The requested protocol version {_sentHeader} is not supported. The supported version is {receivedHeader}"); } SaslTransportProvider provider = _amqpSettings.GetTransportProvider <SaslTransportProvider>(); var transport = provider.CreateTransport(args.Transport, true); _tcs.TrySetResult(transport); } catch (Exception ex) { args.Exception = ex; CompleteOnException(args); } }
private void OnReadHeaderComplete(TransportAsyncCallbackArgs args) { if (Logging.IsEnabled) { Logging.Enter(this, $"{nameof(OnReadHeaderComplete)}"); } if (args.Exception != null) { CompleteOnException(args); return; } try { ProtocolHeader receivedHeader = new ProtocolHeader(); receivedHeader.Decode(new ByteBuffer(args.Buffer, args.Offset, args.Count)); if (Logging.IsEnabled) { Logging.Info(this, $"{nameof(OnReadHeaderComplete)}: Received Protocol Header: {receivedHeader.ToString()}"); } if (!receivedHeader.Equals(SentProtocolHeader)) { throw new AmqpException(AmqpErrorCode.NotImplemented, $"The requested protocol version {SentProtocolHeader} is not supported. The supported version is {receivedHeader}"); } SaslTransportProvider provider = AmqpSettings.GetTransportProvider <SaslTransportProvider>(); var transport = provider.CreateTransport(args.Transport, true); if (Logging.IsEnabled) { Logging.Info(this, $"{nameof(OnReadHeaderComplete)}: Created SaslTransportHandler "); } TaskCompletionSource.TrySetResult(transport); if (Logging.IsEnabled) { Logging.Exit(this, $"{nameof(OnReadHeaderComplete)}"); } } catch (Exception ex) { args.Exception = ex; CompleteOnException(args); } }