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