Ejemplo n.º 1
0
        private void DiscoverNodesSync()
        {
            using (var discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint()))
            {
                FindResponse fileToMachineEndPoints =
                    discoveryClient.Find(new FindCriteria(typeof(IFileToMachineServiceContract)));
                foreach (EndpointDiscoveryMetadata endpoint in fileToMachineEndPoints.Endpoints)
                {
                    try
                    {
                        var client = new FileToMachineClient(new BasicHttpBinding(), endpoint.Address);
                        FileToMachineHandler.AddToRoutingTable(client.Ping().NodeIdentifier);
                    }
                    catch (CommunicationException e)
                    {
                    }
                }

                FindResponse reverseIndexEndPoints =
                    discoveryClient.Find(new FindCriteria(typeof(IReverseIndexServiceContract)));
                foreach (EndpointDiscoveryMetadata endPoint in reverseIndexEndPoints.Endpoints)
                {
                    try
                    {
                        var client = new ReverseIndexServiceClient(new BasicHttpBinding(), endPoint.Address);
                        ReverseIndexHandler.AddToRoutingTable(client.Ping().NodeIdentifier);
                    }
                    catch (CommunicationException e)
                    {
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void InitDiscovery()
        {
            IObservable <ServiceEndpointDiscoveredEventArgs <string> > reverseIndexObservable = Observable.Start(
                () => GetServiceDiscoveryData <IReverseIndexServiceContract>())
                                                                                                .Merge()
                                                                                                .Select(discoveryMetadata =>
            {
                try
                {
                    var client = new ReverseIndexServiceClient(new BasicHttpBinding(), discoveryMetadata.Address);
                    return(new ServiceEndpointDiscoveredEventArgs <string>(client.Ping().NodeIdentifier,
                                                                           discoveryMetadata));
                }
                catch (Exception)
                {
                    return(null);
                }
            })
                                                                                                .Where(discoveredEventArgs => discoveredEventArgs != null)
                                                                                                .Do(OnReverseIndexServiceEndpointDiscovered);

            IObservable <ServiceEndpointDiscoveredEventArgs <FileId> > fileToMachineObservable =
                Observable.Start(() => GetServiceDiscoveryData <IFileToMachineServiceContract>())
                .Merge()
                .Select(discoveryMetadata =>
            {
                try
                {
                    var client = new FileToMachineClient(new BasicHttpBinding(), discoveryMetadata.Address);
                    return(new ServiceEndpointDiscoveredEventArgs <FileId>(client.Ping().NodeIdentifier,
                                                                           discoveryMetadata));
                }
                catch (Exception)
                {
                    return(null);
                }
            })
                .Where(discoveredEventArgs => discoveredEventArgs != null)
                .Do(OnFileToMachineEndpointDiscovered);

            reverseIndexObservable.Merge <object>(fileToMachineObservable)
            .ObserveOnDispatcher()
            .Subscribe(_ => { }, OnDiscoveryFinished);
        }