public AddEndpointWindow(IModalService modalService, WuEndpointCollection endpointCollection,
                                 WuEndpointFactory endpointFactory)
        {
            _modalService       = modalService ?? throw new ArgumentNullException(nameof(modalService));
            _endpointCollection = endpointCollection ?? throw new ArgumentNullException(nameof(endpointCollection));
            _wuEndpointFactory  = endpointFactory;

            InitializeComponent();

            TextBoxUrlInput.Text = $"{AddHostViewModel.DefaultScheme}://localhost:{AddHostViewModel.DefaultPort}/{AddHostViewModel.DefaultPath}";
        }
예제 #2
0
        public void Should_DismissConnection_When_EndpointNotProvidesVersionInfo()
        {
            _service.Setup(s => s.GetServiceVersion()).Returns <VersionInfo[]>(null);

            var factory = new WuEndpointFactory(_serviceFactory);

            factory.TryCreateWuEndpoint(
                new NetTcpBinding(),
                new EndpointAddress("net.tcp://any"),
                out IWuEndpoint endpoint,
                out Exception exception);

            Assert.IsInstanceOfType(exception, typeof(EndpointNotSupportedException));
        }
        async private static Task <AddHostViewModel> ConnectToHost(WuEndpointFactory endpointFactory, string url)
        {
            if (String.IsNullOrWhiteSpace(url))
            {
                throw new ArgumentNullException(nameof(url));
            }
            if (endpointFactory == null)
            {
                throw new ArgumentNullException(nameof(endpointFactory));
            }

            Task <AddHostViewModel> addEndpoint = Task.Run(() =>
            {
                Uri uri = null;
                try
                {
                    uri = GetHostUriFromString(url);
                    if (uri.Scheme != Uri.UriSchemeNetTcp)
                    {
                        throw new NotSupportedException($"Scheme {uri.Scheme.ToString()} is not supported.");
                    }

                    var remoteAddr = new EndpointAddress(uri.ToString());
                    var binding    = new NetTcpBinding();
                    if (endpointFactory.TryCreateWuEndpoint(binding, remoteAddr,
                                                            out IWuEndpoint endpoint, out Exception exception))
                    {
                        Debug.Assert(exception == null || exception is EndpointNeedsUpgradeException);
                        return(new AddHostViewModel(uri.ToString(), true, exception, endpoint));
                    }
                    else
                    {
                        return(new AddHostViewModel(uri.ToString(), false, exception, null));
                    }
                }
                catch (Exception ex)
                {
                    return(new AddHostViewModel((uri != null)?uri.ToString():url, false, ex, null));
                }
            });