public RelayedOnewayChannelListener(BindingContext context, RelayedOnewayTransportBindingElement transportBindingElement) : base(context.Binding) { this.nameSettings = context.BindingParameters.Find <Microsoft.ServiceBus.NameSettings>(); if (this.nameSettings == null) { this.nameSettings = new Microsoft.ServiceBus.NameSettings(); this.nameSettings.ServiceSettings.ListenerType = ListenerType.Unicast; } this.scheme = context.Binding.Scheme; this.messageVersion = context.Binding.MessageVersion; switch (context.ListenUriMode) { case ListenUriMode.Explicit: { this.SetUri(context.ListenUriBaseAddress, context.ListenUriRelativeAddress); break; } case ListenUriMode.Unique: { this.SetUniqueUri(context.ListenUriBaseAddress, context.ListenUriRelativeAddress); break; } } this.channel = new RelayedOnewayChannelListener.RelayedOnewayInputChannel(this, new EndpointAddress(this.Uri, new AddressHeader[0])); base.Acceptor = new Microsoft.ServiceBus.Channels.InputChannelAcceptor(this, () => this.GetPendingException()); this.ChannelAcceptor.EnqueueAndDispatch(this.channel, new Action(this.OnChannelDequeued)); this.connection = RelayedOnewayManager.RegisterListener(context, transportBindingElement, this); }
protected override void OnOpen(TimeSpan timeout) { TimeoutHelper timeoutHelper = new TimeoutHelper(timeout); base.OnOpen(timeoutHelper.RemainingTime()); IRelayedOnewayListener relayedOnewayListener = this.connection; if (relayedOnewayListener != null) { relayedOnewayListener.Open(timeoutHelper.RemainingTime()); } }
private static void OnListenerClosing(object sender, EventArgs args) { IRelayedOnewayListener relayedOnewayListener; IRelayedOnewayListener relayedOnewayListener1 = (IRelayedOnewayListener)sender; lock (RelayedOnewayManager.listenerTable) { if (RelayedOnewayManager.listenerTable.TryLookupUri(relayedOnewayListener1.Uri, HostNameComparisonMode.Exact, out relayedOnewayListener) && relayedOnewayListener == relayedOnewayListener1) { RelayedOnewayManager.listenerTable.UnregisterUri(relayedOnewayListener1.Uri, HostNameComparisonMode.Exact); } } }
protected override IAsyncResult OnBeginOpen(TimeSpan timeout, AsyncCallback callback, object state) { IRelayedOnewayListener relayedOnewayListener = this.connection; if (relayedOnewayListener == null) { return(new DelegatingAsyncResult(new Func <TimeSpan, AsyncCallback, object, IAsyncResult>(this.OnBeginOpen), new Action <IAsyncResult>(this.OnEndOpen), timeout, callback, state)); } Microsoft.ServiceBus.Common.ChainedBeginHandler chainedBeginHandler = new Microsoft.ServiceBus.Common.ChainedBeginHandler(this.OnBeginOpen); Microsoft.ServiceBus.Common.ChainedEndHandler chainedEndHandler = new Microsoft.ServiceBus.Common.ChainedEndHandler(this.OnEndOpen); IRelayedOnewayListener relayedOnewayListener1 = relayedOnewayListener; IRelayedOnewayListener relayedOnewayListener2 = relayedOnewayListener; return(new Microsoft.ServiceBus.Common.ChainedAsyncResult(timeout, callback, state, chainedBeginHandler, chainedEndHandler, new Microsoft.ServiceBus.Common.ChainedBeginHandler(relayedOnewayListener1.BeginOpen), new Microsoft.ServiceBus.Common.ChainedEndHandler(relayedOnewayListener2.EndOpen))); }
private void CleanUpConnection() { IRelayedOnewayListener relayedOnewayListener = null; lock (base.ThisLock) { relayedOnewayListener = this.connection; this.connection = null; } if (relayedOnewayListener != null) { relayedOnewayListener.Unregister(this); relayedOnewayListener.Abort(); } }
protected override void OnClose(TimeSpan timeout) { TimeoutHelper timeoutHelper = new TimeoutHelper(timeout); IRelayedOnewayListener relayedOnewayListener = null; lock (base.ThisLock) { relayedOnewayListener = this.connection; this.connection = null; } if (relayedOnewayListener != null) { relayedOnewayListener.Unregister(this); relayedOnewayListener.Close(timeoutHelper.RemainingTime()); } base.OnClose(timeoutHelper.RemainingTime()); }
protected override IAsyncResult OnBeginClose(TimeSpan timeout, AsyncCallback callback, object state) { IRelayedOnewayListener relayedOnewayListener = null; lock (base.ThisLock) { relayedOnewayListener = this.connection; this.connection = null; } if (relayedOnewayListener == null) { return(new DelegatingAsyncResult(new Func <TimeSpan, AsyncCallback, object, IAsyncResult>(this.OnBeginClose), new Action <IAsyncResult>(this.OnEndClose), timeout, callback, state)); } relayedOnewayListener.Unregister(this); IRelayedOnewayListener relayedOnewayListener1 = relayedOnewayListener; IRelayedOnewayListener relayedOnewayListener2 = relayedOnewayListener; return(new Microsoft.ServiceBus.Common.ChainedAsyncResult(timeout, callback, state, new Microsoft.ServiceBus.Common.ChainedBeginHandler(relayedOnewayListener1.BeginClose), new Microsoft.ServiceBus.Common.ChainedEndHandler(relayedOnewayListener2.EndClose), new Microsoft.ServiceBus.Common.ChainedBeginHandler(this.OnBeginClose), new Microsoft.ServiceBus.Common.ChainedEndHandler(this.OnEndClose))); }