private void ValidatePEnumerator() { int invalidEnumerators = 0; do { //if loop is iterated more times than _partitionedEnumerator's size, break the loop if (invalidEnumerators >= _partitionedEnumerators.Count) { break; } if (_partitionedEnumerators != null || _partitionedEnumerators.Count != 0) { _roundRobinIndexer = (++_roundRobinIndexer) % _partitionedEnumerators.Count; _currentPartitionedEnumerator = _partitionedEnumerators[_roundRobinIndexer]; if (!_currentPartitionedEnumerator.IsValid) { invalidEnumerators++; } else { _isValid = true; break; } } } while (true); }
public TaskEnumerator(List <Common.MapReduce.TaskEnumeratorResult> enumeratorResultSet, TaskEnumeratorHandler remoteCache) { _partitionedEnumerators = new List <TaskPartitionedEnumerator>(); foreach (Common.MapReduce.TaskEnumeratorResult result in enumeratorResultSet) { TaskPartitionedEnumerator mrResultPEnumerator = new TaskPartitionedEnumerator(remoteCache, result.Pointer, result.RecordSet, result.NodeAddress, result.IsLastResult); _partitionedEnumerators.Add(mrResultPEnumerator); } ValidatePEnumerator(); }