public void ProbeOperation(FindCriteria findCriteria)
        {
            ProbeMessageCD1 request = new ProbeMessageCD1();

            request.Probe = FindCriteriaCD1.FromFindCriteria(findCriteria);
            this.duplexInnerClient.ProbeOperation(request);
        }
Exemple #2
0
        private static EndpointDiscoveryMetadata FindService()
        {
            //Create Discovery Client
            DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());

            //Create Find Criteria
            var findCriteria = new FindCriteria(typeof(IStringDuplicator))
            {
                Duration = TimeSpan.FromSeconds(1)
            };

            //Searching
            FindResponse findResponse = null;

            for (int i = 0; i < 11; i++)
            {
                Console.WriteLine($"{i + 1} attempt to find server with duration {findCriteria.Duration}");
                findResponse = discoveryClient.Find(findCriteria);
                if (findResponse.Endpoints.Count > 0)
                {
                    break;
                }
                findCriteria.Duration += TimeSpan.FromSeconds(1);
            }
            discoveryClient.Close();

            if (findResponse.Endpoints.Count > 0)
            {
                return(findResponse.Endpoints[0]);
            }
            else
            {
                return(null);
            }
        }
Exemple #3
0
        /// <summary>
        /// Creates Task to handle Probe request
        /// </summary>
        /// <param name="criteria"><see cref="FindCriteria"/> for finding correct endpoints</param>
        /// <returns>Returns <see cref="Task<IEnumerable<EndpointDiscoveryMetadata>>"/> object which encapsulates request handler</returns>
        Task <Collection <EndpointDiscoveryMetadata> > IProbeTaskFactory.Create(FindCriteria criteria)
        {
            // Create Task containing Rx LINQ query
            return(criteria.ContractTypeNames                                                       // Each requested contract name
                   .ToObservable()                                                                  // As Observable
                   .ObserveOn(Scheduler.NewThread)                                                  // Asynchronously
                   .TakeUntil(Observable.Return(XmlQualifiedName.Empty)                             // Take until...
                              .Delay(criteria.Duration))                                            // ...until timeout
                   .Where(name => { return _dictionary.ContainsKey(name); })                        // Select only contract names present in the dictionary
                   .SelectMany(name => { return _dictionary[name].ToObservable(); })                // Endpoints implementing requested Contract name
                   .Where(endpoint =>
            {
                return _scopesPredicate(endpoint.Scopes,                                            // With matching scopes
                                        criteria.Scopes,
                                        criteria.ScopeMatchBy)

                && _extensionsPredicate(endpoint.Extensions,                                        // and matching extensions
                                        criteria.Extensions);
            })
                   .Take(criteria.MaxResults)                                                       // Take requested number of results
                   .Aggregate(new Collection <EndpointDiscoveryMetadata>(),
                              (context, endpoint) =>
            {
                context.Add(endpoint);                                                              // Add matching endpoints
                return context;
            })
                   .ToTask());
        }
        private DiscoveryEndpoint DiscoverEndpoint(DiscoveryEndpoint endpoint, bool required)
        {
            using (var discover = new DiscoveryClient(UdpDiscoveryEndpoint ?? new UdpDiscoveryEndpoint()))
            {
                var criteria = new FindCriteria(endpoint.Contract.ContractType)
                {
                    MaxResults = 1
                };
                if (DiscoveryDuration.HasValue)
                {
                    criteria.Duration = DiscoveryDuration.Value;
                }

                var discovered = discover.Find(criteria);
                if (discovered.Endpoints.Count > 0)
                {
                    var endpointMetadata = discovered.Endpoints[0];
                    var binding          = Binding ?? AbstractChannelBuilder.GetBindingFromMetadata(endpointMetadata);
                    return(new DiscoveryEndpoint(binding, endpointMetadata.Address));
                }

                if (required)
                {
                    throw new EndpointNotFoundException("Unable to locate a ServiceCatalog on the network.");
                }

                return(null);
            }
        }
        public static Binding DiscoverBinding <T>(Uri scope = null)
        {
            DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());

            FindCriteria criteria = FindCriteria.CreateMetadataExchangeEndpointCriteria();

            criteria.MaxResults = 1;
            if (scope != null)
            {
                criteria.Scopes.Add(scope);
            }
            FindResponse discovered = discoveryClient.Find(criteria);

            discoveryClient.Close();

            Debug.Assert(discovered.Endpoints.Count == 1);

            Uri mexAddress = discovered.Endpoints[0].Address.Uri;

            ServiceEndpoint[] endpoints = MetadataHelper.GetEndpoints(mexAddress.AbsoluteUri, typeof(T));

            Debug.Assert(endpoints.Length == 1);

            return(endpoints[0].Binding);
        }
Exemple #6
0
      public static void Main(string[] args)
      {
          var endPoint        = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005);
          var discoveryClient = new System.ServiceModel.Discovery.DiscoveryClient(endPoint);

          var findCriteria = new FindCriteria
          {
              Duration   = TimeSpan.FromSeconds(3),
              MaxResults = int.MaxValue
          };

          findCriteria.ContractTypeNames.Add(new XmlQualifiedName("NetworkVideoTransmitter", @"http://www.onvif.org/ver10/network/wsdl"));

          Console.WriteLine("Initiating find operation.");

          var           response = discoveryClient.Find(findCriteria);
          List <string> lst      = new List <string>();

          foreach (var e in response.Endpoints)
          {
              foreach (var item in e.ListenUris)
              {
                  string uri  = item.OriginalString;
                  string host = item.Host;
                  lst.Add(host + ": " + uri);
              }
          }
          lst = lst.Distinct().ToList();
          lst.ForEach(x => Console.WriteLine(x));

          Console.WriteLine($"Operation returned - Found {lst.Count} endpoints.");
          Console.ReadKey();
      }
        public TService Discover <TService>() where TService : class
        {
            var discoveryBinding = _options.DiscoveryBindingFactory.Invoke();

            if (!string.Equals(discoveryBinding.Scheme, _options.ProbeEndpoint.Scheme))
            {
                throw new ArgumentException("ProbeEndpoint is not valid for the given DiscoveryBinding", nameof(ServiceModelDiscoveryOptions.ProbeEndpoint));
            }

            var probeEndpointAddress = new EndpointAddress(_options.ProbeEndpoint);
            var discoveryEndpoint    = new DiscoveryEndpoint(discoveryBinding, probeEndpointAddress);

            try
            {
                var criteria = new FindCriteria(typeof(TService));

                var endpoints = _discoveryClient.FindEndpoints(discoveryEndpoint, criteria);

                var items = from endpoint in endpoints
                            let binding = _bindingFactory.Create(typeof(TService), endpoint.Address.Uri.Scheme)
                                          where binding != null
                                          let channel = _channelFactory.CreateChannel <TService>(binding, endpoint.Address)
                                                        select channel;

                return(items.FirstOrDefault());
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"An error occurred while resolving the service {typeof(TService).Name}");
            }

            return(null);
        }
 public virtual EndpointDiscoveryMetadata[] FindEndpoints(FindCriteria criteria)
 {
     using (@lock.ForReading())
     {
         return(MatchTargets(criteria).ToArray());
     }
 }
Exemple #9
0
        private static DiscoveryClient BuildDiscoveryClient(string adapterId, DiscoveryVersion version)
        {
            var epDiscovery = new UdpDiscoveryEndpoint(version);
            var b           = (CustomBinding)epDiscovery.Binding;

            if (b == null)
            {
                return(null);
            }

            epDiscovery.TransportSettings.MulticastInterfaceId = adapterId;
            b.Elements.Insert(0, new MulticastCapabilitiesBindingElement(true));

            var discoveryClient = new DiscoveryClient(epDiscovery);

            discoveryClient.FindProgressChanged += DiscoveryClientFindProgressChanged;
            //discoveryClient.FindCompleted += DiscoveryClientFindCompleted;

            FindCriteria findCriteria = new FindCriteria
            {
                Duration   = TimeSpan.FromMinutes(5),
                MaxResults = int.MaxValue
            };

            foreach (var ctn in CtNs)
            {
                findCriteria.ContractTypeNames.Add(ctn);
            }

            discoveryClient.FindAsync(findCriteria);
            return(discoveryClient);
        }
        void CheckForServices()
        {
            btnRefresh.IsEnabled = false;

            DiscoveryClient discoveryProxy = new DiscoveryClient(new UdpDiscoveryEndpoint());
            FindCriteria    findCriteria   = new FindCriteria(typeof(IGeoService))
            {
                MaxResults = 1,
                Duration   = new TimeSpan(0, 0, 5)
            };

            findCriteria.Scopes.Add(new Uri("http://www.pluralsight.com/miguel-castro/discoverability"));

            FindResponse discoveryResponse = discoveryProxy.Find(findCriteria);

            if (discoveryResponse.Endpoints.Count == 0)
            {
                _DiscoveredAddress = null;

                btnGetInfo.IsEnabled     = false;
                btnGetZipCodes.IsEnabled = false;
            }
            else
            {
                EndpointDiscoveryMetadata discoveredEndpoint = discoveryResponse.Endpoints[0];
                _DiscoveredAddress = discoveredEndpoint.Address;

                btnGetInfo.IsEnabled     = true;
                btnGetZipCodes.IsEnabled = true;
            }

            btnRefresh.IsEnabled = true;
        }
        void RemoveOnlineService(EndpointDiscoveryMetadata endpointDiscoveryMetadata)
        {
            if (endpointDiscoveryMetadata == null)
            {
                throw new Exception("Metadata is invalid.");
            }

            var mexCriteria = new FindCriteria(typeof(IMetadataExchange));

            if (mexCriteria.IsMatch(endpointDiscoveryMetadata))
            {
                return;
            }

            lock (this._onlineServices)
            {
                XElement delService = endpointDiscoveryMetadata.Extensions.FirstOrDefault(x =>
                                                                                          x.Name.LocalName == "Id" && x.Value != "") ??
                                      endpointDiscoveryMetadata.Extensions.FirstOrDefault(x =>
                                                                                          x.Name.LocalName == "Contract" && x.Value != "");
                if (delService == null)
                {
                    return;
                }

                this._onlineServices.Remove(delService.Value);
            }

            PrintDiscoveryMetadata(endpointDiscoveryMetadata, "Removing");
        }
Exemple #12
0
        /// <summary>
        /// Gets the endpoint discovery metadata.
        /// </summary>
        /// <param name="contractTypeName">Name of the contract type.</param>
        /// <returns>SerializableEndpoint[][].</returns>
        public SerializableEndpoint[] GetEndpoints(string contractTypeName)
        {
            using (var clt = CreateDiscoveryClient())
            {
                try
                {
                    var lst = new List <XmlQualifiedName>()
                    {
                        new XmlQualifiedName(contractTypeName)
                    };
                    var criteria         = FindCriteria.CreateMetadataExchangeEndpointCriteria(lst);
                    var resp             = clt.Find(criteria);
                    var serviceEndpoints = new List <SerializableEndpoint>();
                    foreach (var it in resp.Endpoints)
                    {
                        serviceEndpoints.AddRange(MetadataHelper
                                                  .GetEndpoints(it.Address.Uri.AbsoluteUri)
                                                  .Select(ep => new SerializableEndpoint(ep, 0)));
                    }
                    return(serviceEndpoints.ToArray());
                }
                catch (Exception ex)
                {
                    FxLog <Discos> .LogException(ex);

                    return(null);
                }
                finally
                {
                    CloseClient(clt);
                }
            }
        }
Exemple #13
0
        private void IPCameraList()
        {
            var endPoint        = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005);
            var discoveryClient = new DiscoveryClient(endPoint);

            var findCriteria = new FindCriteria
            {
                Duration   = TimeSpan.FromSeconds(3),
                MaxResults = int.MaxValue
            };

            findCriteria.ContractTypeNames.Add(new XmlQualifiedName("NetworkVideoTransmitter", @"http://www.onvif.org/ver10/network/wsdl"));

            var           response = discoveryClient.Find(findCriteria);
            List <string> lst      = new List <string>();

            foreach (var e in response.Endpoints)
            {
                foreach (var item in e.ListenUris)
                {
                    string uri  = item.OriginalString;
                    string host = item.Host;
                    lst.Add(host);
                }
            }
            lst = lst.Distinct().ToList();
            lst.ForEach(x => cmbCameraDevices.Items.Add(x));
        }
Exemple #14
0
        static EndpointAddress FindCalculatorServiceAddress()
        {
            // Create DiscoveryClient
            DiscoveryEndpoint discoveryEndpoint = new DiscoveryEndpoint(new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:8001/DiscoveryRouter/"));
            DiscoveryClient   discoveryClient   = new DiscoveryClient(discoveryEndpoint);

            Console.WriteLine("Finding ICalculatorService endpoints...");
            Console.WriteLine();

            // Find ICalculatorService endpoints
            FindCriteria findCriteria = new FindCriteria(typeof(ICalculatorService));

            findCriteria.Duration = TimeSpan.FromSeconds(10);

            FindResponse findResponse = discoveryClient.Find(findCriteria);

            Console.WriteLine("Found {0} ICalculatorService endpoint(s).", findResponse.Endpoints.Count);
            Console.WriteLine();

            if (findResponse.Endpoints.Count > 0)
            {
                return(findResponse.Endpoints[0].Address);
            }
            else
            {
                return(null);
            }
        }
Exemple #15
0
        public Api()
        {
            FindResponse search = null;

            using (DiscoveryClient discovery = new DiscoveryClient(new UdpDiscoveryEndpoint()))
            {
                FindCriteria filter = new FindCriteria(typeof(IApi));

                filter.MaxResults = 1;

                search = discovery.Find(filter);
            }

            if (search != null)
            {
                if (search.Endpoints != null)
                {
                    if (search.Endpoints.Count.Equals(1))
                    {
                        ChannelFactory <IApi> factory = new ChannelFactory <IApi>(new NetTcpBinding(), search.Endpoints[0].Address);

                        _api = factory.CreateChannel();
                    }
                }
            }
        }
Exemple #16
0
        /// <summary>
        /// Discover specific servcie type.
        /// </summary>
        /// <param name="identifier">String identifier. Only used in console/log output.</param>
        /// <param name="type">Service type.</param>
        /// <param name="timespan">Timeout to discover a service.</param>
        /// <returns></returns>
        private static FindResponse Discover(string identifier, Type type, int timespan)
        {
            FindResponse discovered = null;
            ILog         _log       = LogManager.GetCurrentClassLogger();

            try
            {
                // ------- DISCOVERY ----------
                LogHelper.Log(LogLevel.Info, String.Format("Start discovering {0} ...", identifier));

                DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());
                FindCriteria    criteria        = new FindCriteria(type);
                criteria.Duration = TimeSpan.FromSeconds(timespan);
                discovered        = discoveryClient.Find(criteria);

                LogHelper.Log(LogLevel.Info, String.Format("{0} Discovery: {1} services found.", identifier, discovered.Endpoints.Count));
                LogHelper.PrintEndPoints(discovered.Endpoints);
                discoveryClient.Close();
            }
            catch (FaultException <ArgumentException> exc)
            {
                _log.Fatal(m => m("FaultException: {0}", exc));
            }
            catch (Exception exc)
            {
                _log.Fatal(m => m("Exception: {0}", exc));
            }
            return(discovered);
        }
Exemple #17
0
        private static void Main()
        {
            var client = new DiscoveryClient(new UdpDiscoveryEndpoint());

            // Найти все доступные конечные точки
            // Note: вы также можете вызвать этот метод асинхронно
            var criteria = new FindCriteria(typeof(FileServiceLib.IFileService));
            var response = client.Find(criteria);

            // Связаться с одной из них
            FileServiceClient svcClient = null;

            foreach (var endpoint in response.Endpoints)
            {
                svcClient = new FileServiceClient();
                svcClient.Endpoint.Address = endpoint.Address;
                break;
            }
            // Вызвать службу
            if (svcClient != null)
            {
                var dirs = svcClient.GetSubDirectories(@"C:\");
                foreach (var dir in dirs)
                {
                    Console.WriteLine(dir);
                }
            }
            Console.ReadLine();
        }
Exemple #18
0
        private void Search_Click(object sender, RoutedEventArgs e)
        {
            DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());
            FindCriteria    findCriteria    = new FindCriteria(typeof(IServerService));

            findCriteria.Duration = TimeSpan.FromSeconds(2);

            FindResponse findResponse = discoveryClient.Find(findCriteria);

            FoundServers = findResponse.Endpoints.Count;

            foreach (EndpointDiscoveryMetadata edm in findResponse.Endpoints)
            {
                serverComboBox.Items.Add(edm.Address.Uri.ToString());
            }

            if (serverComboBox.Items.Count > 0)
            {
                serverComboBox.SelectedIndex = 0;
            }
            else
            {
                MessageBox.Show("Nie odnaleziono serwera");
            }
        }
        public static T CreateChannel <T>(string serviceNamespace, string secret, Uri scope = null) where T : class
        {
            ServiceBusDiscoveryClient discoveryClient = new ServiceBusDiscoveryClient(serviceNamespace, secret);

            FindCriteria criteria = FindCriteria.CreateMetadataExchangeEndpointCriteria();

            criteria.MaxResults = 1;
            if (scope != null)
            {
                criteria.Scopes.Add(scope);
            }
            FindResponse discovered = discoveryClient.Find(criteria);

            discoveryClient.Close();

            Debug.Assert(discovered.Endpoints.Count == 1);
            Uri mexAddress = discovered.Endpoints[0].Address.Uri;

            ServiceEndpoint[] endpoints = ServiceBusMetadataHelper.GetEndpoints(mexAddress.AbsoluteUri, typeof(T), secret);
            Debug.Assert(endpoints.Length == 1);

            Binding         binding = endpoints[0].Binding;
            EndpointAddress address = endpoints[0].Address;

            ChannelFactory <T> factory = new ChannelFactory <T>(binding, address);

            factory.SetServiceBusCredentials(secret);

            return(factory.CreateChannel());
        }
Exemple #20
0
        /// <summary>
        /// Gets all endpoints.
        /// </summary>
        /// <returns>SerializableEndpoint[][].</returns>
        public SerializableEndpoint[] GetAllEndpoints()
        {
            using (var clt = CreateDiscoveryClient())
            {
                try
                {
                    var criteria         = FindCriteria.CreateMetadataExchangeEndpointCriteria();
                    var resp             = clt.Find(criteria);
                    var serviceEndpoints = new List <SerializableEndpoint>();
                    foreach (var it in resp.Endpoints)
                    {
                        try
                        {
                            var sep = MetadataHelper.GetEndpoints(it.Address.Uri.AbsoluteUri);
                            serviceEndpoints.AddRange(sep.Select(ep => new SerializableEndpoint(ep, 0)));
                        }
                        catch (Exception e)
                        {
                            FxLog <Discos> .LogException(e);
                        }
                    }
                    return(serviceEndpoints.ToArray());
                }
                catch (Exception ex)
                {
                    FxLog <Discos> .LogException(ex);

                    return(null);
                }
                finally
                {
                    CloseClient(clt);
                }
            }
        }
        public EndpointDiscoveryMetadata ChooseTarget(FindCriteria criteria = null)
        {
            var choose = new ChooseContext(this, criteria);

            ChooseTarget(choose);
            return(choose.SelectedEndpoint);
        }
        internal void InitializeFrom(FindCriteria fc)
        {
            foreach (var ctn in fc.ContractTypeNames)
            {
                ContractTypeNames.Add(new ContractTypeNameElement()
                {
                    Name = ctn.Name, Namespace = ctn.Namespace
                });
            }
            Duration = fc.Duration;
            var doc = new XmlDocument();

            foreach (var ext in fc.Extensions)
            {
                var xr = ext.CreateReader();
                xr.MoveToContent();
                Extensions.Add(new XmlElementElement()
                {
                    XmlElement = (XmlElement)doc.ReadNode(xr)
                });
            }
            MaxResults   = fc.MaxResults;
            ScopeMatchBy = fc.ScopeMatchBy;
            foreach (var scope in fc.Scopes)
            {
                Scopes.Add(new ScopeElement()
                {
                    Scope = scope
                });
            }
        }
Exemple #23
0
        public DiscoveryClient startDiscovery(TimeSpan span)
        {
            try
            {
                var endPoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005);

                var discoveryClient = new DiscoveryClient(endPoint);

                discoveryClient.FindCompleted       += DiscoveryClient_FindCompleted;
                discoveryClient.FindProgressChanged += discoveryClient_FindProgressChanged;

                FindCriteria findCriteria = new FindCriteria();
                findCriteria.Duration   = span;
                findCriteria.MaxResults = int.MaxValue;
                findCriteria.ContractTypeNames.Add(new System.Xml.XmlQualifiedName("NetworkVideoTransmitter", "http://www.onvif.org/ver10/network/wsdl"));
                discoveryClient.FindAsync(findCriteria);

                this.OnRecoveryChange("", DiscoveryEvent.EventTypes.startEvent);

                System.Diagnostics.Trace.WriteLine("DiscoveryClient.startDiscovery O.K ...");

                return(discoveryClient);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine("DiscoveryServer.startDiscovery: " + ex.Message);
                return(null);
            }
        }
Exemple #24
0
        public static MediaDevice[] GetAvailableMediaDevices()
        {
            DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005));
            FindCriteria    findCriteria    = new FindCriteria
            {
                Duration   = TimeSpan.FromSeconds(1),
                MaxResults = 15
            };

            findCriteria.ContractTypeNames.Add(new XmlQualifiedName("NetworkVideoTransmitter", @"http://www.onvif.org/ver10/network/wsdl"));

            FindResponse findResponse = discoveryClient.Find(findCriteria);

            List <MediaDevice> cameras = new List <MediaDevice>();

            foreach (var point in findResponse.Endpoints)
            {
                Uri uri = point.ListenUris.FirstOrDefault(u => u.HostNameType == UriHostNameType.IPv4);
                if (uri != null)
                {
                    string name = ONVIFAgent.GetDeviceInformation(uri);

                    cameras.Add(new MediaDevice(name, uri));
                }
            }
            return(cameras.ToArray());
        }
        static T[] CreateChannelsFromMex <T>(Uri scope = null) where T : class
        {
            DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());
            FindCriteria    criteria        = FindCriteria.CreateMetadataExchangeEndpointCriteria();

            FindResponse discovered = discoveryClient.Find(criteria);

            discoveryClient.Close();

            if (discovered.Endpoints.Count == 0)
            {
                return(new T[] {});
            }

            List <T> list = new List <T>();

            foreach (EndpointDiscoveryMetadata mexEndpoint in discovered.Endpoints)
            {
                ServiceEndpoint[] endpoints = MetadataHelper.GetEndpoints(mexEndpoint.Address.Uri.AbsoluteUri, typeof(T));
                foreach (ServiceEndpoint endpoint in endpoints)
                {
                    T proxy = ChannelFactory <T> .CreateChannel(endpoint.Binding, endpoint.Address);

                    list.Add(proxy);
                }
            }
            Debug.Assert(list.Count > 0);
            return(list.ToArray());
        }
Exemple #26
0
        private FindCriteria CreateSearchCriteria(DiscoveredEndpointModel model)
        {
            var searchContract = model.SearchContract ?? contract;
            var criteria       = new FindCriteria(searchContract)
            {
                MaxResults = model.MaxResults
            };

            if (model.Duration.HasValue)
            {
                criteria.Duration = model.Duration.Value;
            }

            var discovery = model.Extensions.OfType <WcfInstanceExtension>()
                            .Select(extension => extension.Instance)
                            .OfType <EndpointDiscoveryBehavior>()
                            .FirstOrDefault();

            if (discovery != null)
            {
                criteria.Scopes.AddAll(discovery.Scopes);

                if (model.ScopeMatchBy != null)
                {
                    criteria.ScopeMatchBy = model.ScopeMatchBy;
                }

                criteria.Extensions.AddAll(discovery.Extensions);
            }

            return(criteria);
        }
Exemple #27
0
        static string[] DiscoverMexAddresses()
        {
            DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());
            FindResponse    discovered      = discoveryClient.Find(FindCriteria.CreateMetadataExchangeEndpointCriteria());

            return(discovered.Endpoints.Select(mexEndpoint => mexEndpoint.Address.Uri.AbsoluteUri).ToArray());
        }
 private void Validate(FindCriteria findCriteria)
 {
     if (!string.IsNullOrWhiteSpace(findCriteria.OrderBy))
     {
         ValidateOrderBy(findCriteria.OrderBy);
     }
 }
Exemple #29
0
        FindResponse Find(FindCriteria criteria)
        {
            var req = new MessageContractsCD1.FindRequest()
            {
                Body = new FindCriteriaCD1(criteria)
            };

            Channel.BeginFind(req, delegate(IAsyncResult result) {
                Channel.EndFind(result);
            }, null);

            var timeout = InnerChannel.OperationTimeout < criteria.Duration ? InnerChannel.OperationTimeout : criteria.Duration;

            if (!reply_find_handle.WaitOne(timeout))
            {
                throw new EndpointNotFoundException("The discovery client could not receive Find operation response within the operation timeout.");
            }
            try {
                var ir  = find_completed();
                var ret = new FindResponse();
                foreach (var fr in ir.Body)
                {
                    ret.Endpoints.Add(fr.ToEndpointDiscoveryMetadata());
                }
                return(ret);
            } finally {
                find_completed = null;
            }
        }
        public IAsyncResult BeginProbeOperation(FindCriteria findCriteria, AsyncCallback callback, object state)
        {
            ProbeMessageCD1 request = new ProbeMessageCD1();

            request.Probe = FindCriteriaCD1.FromFindCriteria(findCriteria);
            return(this.duplexInnerClient.BeginProbeOperation(request, callback, state));
        }
        public static FindCriteriaApril2005 FromFindCriteria(FindCriteria findCriteria)
        {
            if (findCriteria == null)
            {
                throw FxTrace.Exception.ArgumentNull("findCriteria");
            }

            return new FindCriteriaApril2005(findCriteria);
        }
        internal void ApplyConfiguration(FindCriteria findCriteria)
        {
            foreach (ContractTypeNameElement contractTypeNameElement in this.ContractTypeNames)
            {
                findCriteria.ContractTypeNames.Add(
                    new XmlQualifiedName(
                    contractTypeNameElement.Name, 
                    contractTypeNameElement.Namespace));
            }

            foreach (ScopeElement scopeElement in this.Scopes)
            {
                findCriteria.Scopes.Add(scopeElement.Scope);
            }

            foreach (XmlElementElement xmlElement in this.Extensions)
            {
                findCriteria.Extensions.Add(XElement.Parse(xmlElement.XmlElement.OuterXml));
            }

            findCriteria.ScopeMatchBy = this.ScopeMatchBy;
            findCriteria.Duration = this.Duration;
            findCriteria.MaxResults = this.MaxResults;
        }
 FindCriteriaApril2005()
 {
     this.findCriteria = new FindCriteria();
 }
 FindCriteriaApril2005(FindCriteria findCriteria)
 {
     this.findCriteria = findCriteria;
 }
Exemple #35
0
		internal FindCriteria CreateInstance ()
		{
			var fc = new FindCriteria ();
			foreach (ContractTypeNameElement ctn in ContractTypeNames)
				fc.ContractTypeNames.Add (new XmlQualifiedName (ctn.Name, ctn.Namespace));
			fc.Duration = Duration;
			foreach (XmlElementElement ext in Extensions)
				fc.Extensions.Add (XElement.Load (new XmlNodeReader (ext.XmlElement)));
			fc.MaxResults = MaxResults;
			fc.ScopeMatchBy = ScopeMatchBy;
			foreach (ScopeElement scope in Scopes)
				fc.Scopes.Add (scope.Scope);
			return fc;
		}
Exemple #36
0
		internal void InitializeFrom (FindCriteria fc)
		{
			foreach (var ctn in fc.ContractTypeNames)
				ContractTypeNames.Add (new ContractTypeNameElement () { Name = ctn.Name, Namespace = ctn.Namespace});
			Duration = fc.Duration;
			var doc = new XmlDocument ();
			foreach (var ext in fc.Extensions) {
				var xr = ext.CreateReader ();
				xr.MoveToContent ();
				Extensions.Add (new XmlElementElement () { XmlElement = (XmlElement) doc.ReadNode (xr) });
			}
			MaxResults = fc.MaxResults;
			ScopeMatchBy = fc.ScopeMatchBy;
			foreach (var scope in fc.Scopes)
				Scopes.Add (new ScopeElement () { Scope = scope});
		}
		internal FindCriteriaApril2005 (FindCriteria source)
		{
			this.source = source;
		}
		public static FindCriteriaApril2005 FromFindCriteria (FindCriteria findCriteria)
		{
			return new FindCriteriaApril2005 (findCriteria);
		}
 FindCriteriaCD1()
 {
     this.findCriteria = new FindCriteria();
 }
        /// <summary>
        /// Find open opportunities based on contact or org.
        /// </summary>
        /// <param name="attribute"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public List<OpportunityModel> FindOpenOpportunities(string attribute, string value)
        {
            try
            {
                ViewCriteriaItem item = new ViewCriteriaItem();
                item.upperCaseCompare = false;
                item.attribute = attribute;
                item.@operator = "=";
                item.Items = new[] {value};

                ViewCriteriaItem item2 = new ViewCriteriaItem();
                item2.upperCaseCompare = true;
                item2.attribute = "StatusCode";
                item2.@operator = "=";
                item2.Items = new[] {"Open"};

                ViewCriteriaRow condition1 = new ViewCriteriaRow();
                condition1.upperCaseCompare = false;
                condition1.item = new[] {item, item2};

                ViewCriteria viewCriteria = new ViewCriteria();
                viewCriteria.conjunction = Conjunction.And;
                viewCriteria.group = new[] {condition1};

                //Sorting by Creation date.
                SortAttribute sortAttr = new SortAttribute();
                sortAttr.name = "CreationDate";
                sortAttr.descending = true;

                FindCriteria findCriteria = new FindCriteria();
                findCriteria.fetchStart = 0;
                findCriteria.fetchSize = 500;
                findCriteria.filter = viewCriteria;
                findCriteria.sortOrder = new[] {sortAttr};

                findCriteria.findAttribute = new string[]
                {
                    "KeyContactId",
                    "PrimaryContactPartyName",
                    "SalesAccountId",
                    "TargetPartyName",
                    "OptyId",
                    "OptyNumber",
                    "PartyName1",
                    "EmailAddress",
                    "Name",
                    "Description",
                    "StatusCode",
                    "SalesMethod",
                    "SalesStage",
                    "SalesChannelCd",
                    "CurrencyCode",
                    "Revenue",
                    "WinProb",
                    "CreatedBy",
                    "CreationDate",
                    "EffectiveDate"
                };

                FindControl findControl = new FindControl();

                Opportunity[] opp = _opportunityClient.findOpportunity(findCriteria, findControl);

                return getOpportunityModels(opp);
            }
            catch (EndpointNotFoundException wex)
            {
                //Handling incorrect opportunity endpoint
                _logger.Error(wex.Message, wex.StackTrace);
                MessageBox.Show(OSCExceptionMessages.EndpointNotFound,
                    OSCOpportunitiesCommon.EndpointNotFound, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (MessageSecurityException mse)
            {
                //Handling incorrect credentials
                _logger.Error(mse.Message, mse.StackTrace);
                MessageBox.Show(OSCExceptionMessages.OpportunityAuthError,
                    OSCOpportunitiesCommon.OpportunityAuthError, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (CommunicationException ce)
            {
                //Handling maximum reponse size exceeded
                _logger.Error(ce.Message, ce.StackTrace);
                MessageBox.Show(OSCExceptionMessages.MaxReceivedMessageSizeExceeded,
                        OSCOpportunitiesCommon.MaxReceivedMessageSizeExceededTitle, MessageBoxButtons.OK,
                        MessageBoxIcon.Error);
            }
            catch (Exception ex)
            {
                _logger.Error(ex.Message, ex.StackTrace);
                MessageBox.Show(OSCExceptionMessages.UnexpectedError,
                       "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            return null;
        }
 FindCriteriaCD1(FindCriteria findCriteria)
 {
     this.findCriteria = findCriteria;
 }
Exemple #42
0
		public static FindCriteriaCD1 FromFindCriteria (FindCriteria findCriteria)
		{
			return new FindCriteriaCD1 (findCriteria);
		}
Exemple #43
0
		internal FindCriteriaCD1 (FindCriteria source)
		{
			this.source = source;
		}
Exemple #44
0
		public void ReadXml (XmlReader reader)
		{
			source = FindCriteria.ReadXml (reader, version);
		}
		public static FindCriteriaApril2005 FromFindCriteria (FindCriteria findCriteria)
		{
			throw new NotImplementedException ();
		}