Exemplo n.º 1
0
        void SynchronizeParameters(ProbeDialog dlg)
        {
            List <DiscoveryType> oldTypes  = new List <DiscoveryType>(_types);
            List <string>        oldScopes = new List <string>(_scopes);

            foreach (ListViewItem item in dlg.TypesList.Items)
            {
                string type = item.SubItems[0].Text;
                string ns   = item.SubItems[1].Text;

                DiscoveryType t = oldTypes.Where(T => T.Type == type && T.Namespace == ns).FirstOrDefault();
                if (t == null)
                {
                    DiscoveryType newType = new DiscoveryType()
                    {
                        Type = type, Namespace = ns
                    };
                    _types.Add(newType);
                }
                else
                {
                    oldTypes.Remove(t);
                }
            }

            foreach (DiscoveryType t in oldTypes)
            {
                _types.Remove(t);
            }
            foreach (ListViewItem item in dlg.ScopesList.Items)
            {
                string scope = item.SubItems[0].Text;

                if (_scopes.Contains(scope))
                {
                    oldScopes.Remove(scope);
                }
                else
                {
                    _scopes.Add(scope);
                }
            }

            foreach (string scope in oldScopes)
            {
                _scopes.Remove(scope);
            }
        }
Exemplo n.º 2
0
        private void btnProbe_Click(object sender, EventArgs e)
        {
            ProbeDialog dlg = new ProbeDialog();

            dlg.InitializeTypes(_types);
            dlg.InitializeScopes(_scopes);

            DialogResult result = dlg.ShowDialog();

            if (result == DialogResult.Cancel)
            {
                return;
            }

            SynchronizeParameters(dlg);

            InitializeDiscoveryClient(dlg.DiscoveryVersion);
            lvDevices.Items.Clear();

            FindCriteria request = new FindCriteria();

            request.ScopeMatchBy = new Uri("http://schemas.xmlsoap.org/ws/2005/04/discovery/rfc3986");

            foreach (ListViewItem item in dlg.TypesList.CheckedItems)
            {
                XmlQualifiedName type = new XmlQualifiedName(item.SubItems[0].Text, item.SubItems[1].Text);
                request.ContractTypeNames.Add(type);
            }

            foreach (ListViewItem item in dlg.ScopesList.CheckedItems)
            {
                request.Scopes.Add(new Uri((item.SubItems[0].Text)));
            }


            request.Duration = new TimeSpan(0, 0, 0, 10, 0);
            btnProbe.Enabled = false;
            _discoveryClient.FindAsync(request);
        }