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