private void Connect() { IWuRemoteService service = null; var callbackReceiver = new CallbackReceiver(); lock (ServiceLock) { ThrowIfDisposed(); service = _serviceFactory.GetInstance(_binding, _address, callbackReceiver); if (!(service is IChannel)) { throw new InvalidOperationException( $"{nameof(service)} must implement interface {nameof(IChannel)}."); } if (service != null) { var channel = ((IChannel)service); channel.Faulted += (s, e) => { OnPropertyChanged("ConnectionState"); }; channel.Closed += (s, e) => { OnPropertyChanged("ConnectionState"); }; channel.Closing += (s, e) => { OnPropertyChanged("ConnectionState"); }; channel.Opened += (s, e) => { OnPropertyChanged("ConnectionState"); }; channel.Opening += (s, e) => { OnPropertyChanged("ConnectionState"); }; _callbackReceiver = callbackReceiver; _callbackReceiver.Endpoint = this; Service = service; } } OnPropertyChanged("ConnectionState"); }
private UpdateDescriptionViewModel SetupViewModelState(IWuRemoteService serviceMock = null, IModalService modalMock = null, UpdateDescription updateDesc = null) { serviceMock = (serviceMock != null) ? serviceMock : MoqFactory.Create <IWuRemoteService>(MockBehavior.Loose).Object; var endpointMock = MoqFactory.Create <IWuEndpoint>(); endpointMock.Setup(e => e.Service).Returns(serviceMock); endpointMock.Setup(e => e.ConnectionState).Returns(System.ServiceModel.CommunicationState.Opened); endpointMock.Setup(e => e.IsDisposed).Returns(false); endpointMock.Setup(e => e.FQDN).Returns("mock"); modalMock = (modalMock != null) ? modalMock : MoqFactory.Create <IModalService>(MockBehavior.Loose).Object; updateDesc = (updateDesc != null) ? updateDesc : new UpdateDescription(); return(new UpdateDescriptionViewModel(modalMock, updateDesc, endpointMock.Object)); }
public void Dispose() { lock (ServiceLock) { if (Log.IsDebugEnabled) { Log.Debug($"Disposing endpoint {_fqdn}"); } try { ((IChannel)Service)?.Close(); } catch (Exception e) { Log.Warn(e); } finally { _callbackReceiver = null; Service = null; IsDisposed = true; } } }