public RelayedOnewayAmqpListenerClient(BindingContext context, RelayedOnewayTransportBindingElement transportBindingElement, System.Uri uri, RelayedOnewayListener listener, EventTraceActivity activity) : base(context, transportBindingElement, uri, true, activity)
            {
                this.listener = listener;
                BinaryMessageEncodingBindingElement binaryMessageEncodingBindingElement = ClientMessageUtility.CreateInnerEncodingBindingElement(context);

                this.encoder                  = binaryMessageEncodingBindingElement.CreateMessageEncoderFactory().Encoder;
                this.messageWrapper           = new MessageWrapper(this.encoder);
                this.bufferManager            = BufferManager.CreateBufferManager(transportBindingElement.MaxBufferPoolSize, transportBindingElement.MaxBufferSize);
                base.IsListener               = true;
                this.connectivitySettings     = context.BindingParameters.Find <ConnectivitySettings>();
                this.httpConnectivitySettings = context.BindingParameters.Find <HttpConnectivitySettings>();
            }
        public static IRelayedOnewayListener RegisterListener(BindingContext context, RelayedOnewayTransportBindingElement transportBindingElement, RelayedOnewayChannelListener channelListener)
        {
            IRelayedOnewayListener relayedOnewayListener;

            lock (RelayedOnewayManager.listenerTable)
            {
                if (!RelayedOnewayManager.listenerTable.TryLookupUri(channelListener.BaseAddress, HostNameComparisonMode.Exact, out relayedOnewayListener) || !(RelayedOnewayManager.AppendSlash(relayedOnewayListener.Uri).ToString() == RelayedOnewayManager.AppendSlash(channelListener.BaseAddress).ToString()))
                {
                    relayedOnewayListener          = new RelayedOnewayListener(context, transportBindingElement, channelListener.BaseAddress, new EventTraceActivity());
                    relayedOnewayListener.Closing += new EventHandler(RelayedOnewayManager.OnListenerClosing);
                    RelayedOnewayManager.listenerTable.RegisterUri(channelListener.BaseAddress, HostNameComparisonMode.Exact, relayedOnewayListener);
                }
                else if (!relayedOnewayListener.NameSettings.IsCompatible(channelListener.NameSettings))
                {
                    throw Fx.Exception.AsError(new AddressAlreadyInUseException(SRClient.IncompatibleChannelListener), null);
                }
                relayedOnewayListener.Register(channelListener);
            }
            return(relayedOnewayListener);
        }