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) { } } } }
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); }