Esempio n. 1
0
        public void UpdatePendingPhysicians()
        {
            foreach (var n in knownNodes)
            {
                try
                {
                    var physicians = new PhysicianClient(n).RequestPhysicians();

                    foreach (var p in physicians)
                    {
                        if (!pendingPhysicians.Where(x => x.Address == p.Address).Any())
                        {
                            pendingPhysicians.Add(p);
                        }
                    }

                    List <Blockchain.Entities.Physician> toRemove = new List <Blockchain.Entities.Physician>();
                    foreach (var p in pendingPhysicians)
                    {
                        if (!physicians.Where(x => x.Address == p.Address).Any())
                        {
                            toRemove.Add(p);
                        }
                    }
                    pendingPhysicians.RemoveAll(p => toRemove.Contains(p));
                } catch (RpcException) { }
            }
        }
Esempio n. 2
0
        private void UpdateKnownNodes()
        {
            var nodes2Add = new List <ServerAddress>();

            foreach (var n in node.knownNodes)
            {
                try
                {
                    var nodeList = new PhysicianClient(n).RequestNodes();

                    foreach (var newN in nodeList)
                    {
                        if (!node.knownNodes.Contains(newN) && !nodes2Add.Contains(newN))
                        {
                            nodes2Add.Add(newN);
                        }
                    }
                }
                catch (RpcException) { }
            }

            foreach (var n in nodes2Add)
            {
                node.AddServerAddress(n);
            }
        }
Esempio n. 3
0
        public bool SendTransaction(ITransaction transaction)
        {
            var success = false;

            foreach (var n in knownNodes)
            {
                try
                {
                    success |= new PhysicianClient(n).SendTransaction(transaction).Status == AckMessage.Types.Status.Ok;
                } catch (RpcException) { }

                if (success)
                {
                    break;
                }
            }

            return(success);
        }