private async Task RestoreConnections()

in src/CRA.ClientLibrary/Main/CRAWorker.cs [1006:1050]


        private async Task RestoreConnections(IEnumerable<VertexConnectionInfo> outRows, IEnumerable<VertexConnectionInfo> inRows)
        {            
            var outQueue = new Queue<VertexConnectionInfo>();

            if (outRows != null)
                foreach (var row in outRows)
                    outQueue.Enqueue(row);

            var inQueue = new Queue<VertexConnectionInfo>();

            if (inRows != null)
                foreach (var row in inRows)
                    inQueue.Enqueue(row);

            while (outQueue.Count > 0 || inQueue.Count > 0)
            {
                if (outQueue.Count > 0)
                {
                    var row = outQueue.Dequeue();
                    var task = RetryRestoreConnection(row.FromVertex, row.FromEndpoint, row.ToVertex, row.ToEndpoint, false, _parallelConnect);
                    if (!_parallelConnect)
                    {
                        bool done = await task;
                        if (!done)
                        {
                            outQueue.Enqueue(row);
                        }
                    }
                }

                if (inQueue.Count > 0)
                {
                    var row = inQueue.Dequeue();
                    var task = RetryRestoreConnection(row.FromVertex, row.FromEndpoint, row.ToVertex, row.ToEndpoint, true, _parallelConnect);
                    if (!_parallelConnect)
                    {
                        bool done = await task;
                        if (!done)
                        {
                            inQueue.Enqueue(row);
                        }
                    }
                }
            }
        }