コード例 #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)
                    {
                    }
                }
            }
        }
コード例 #2
0
        private static void Main(string[] args)
        {
            ContractDescription contract = ContractDescription.GetContract(typeof(IReverseIndexServiceContract));
            Binding             binding  = new BasicHttpBinding();
            var address = new EndpointAddress("http://localhost:8020/ReverseIndex");

            var endpoint = new ServiceEndpoint(contract, binding, address);

            using (var client = new ReverseIndexServiceClient(endpoint))
            {
                HeartBeat <string> res = client.Ping(new NodeIdentifier <string>("asd", "asdasd"));
                Console.WriteLine(res);
            }
            Console.ReadLine();
        }
コード例 #3
0
        private static void Main(string[] args)
        {
            ContractDescription contract = ContractDescription.GetContract(typeof (IReverseIndexServiceContract));
            Binding binding = new BasicHttpBinding();
            var address = new EndpointAddress("http://localhost:8020/ReverseIndex");

            var endpoint = new ServiceEndpoint(contract, binding, address);

            using (var client = new ReverseIndexServiceClient(endpoint))
            {
                HeartBeat<string> res = client.Ping(new NodeIdentifier<string>("asd", "asdasd"));
                Console.WriteLine(res);
            }
            Console.ReadLine();
        }
コード例 #4
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);
        }