protected override Task<IAsyncEnumerator<RavenJObject>> GetDocuments(Etag lastEtag)
{
if (Mode == SmugglerMode.Legacy)
{
int retries = RetriesCount;
while (true)
{
try
{
RavenJArray documents = null;
var url = "/docs?pageSize=" + SmugglerOptions.BatchSize + "&etag=" + lastEtag;
ShowProgress("GET " + url);
var request = CreateRequest(url);
request.ExecuteRequest(reader => documents = RavenJArray.Load(new JsonTextReader(reader)));
return new CompletedTask<IAsyncEnumerator<RavenJObject>>(new AsyncEnumeratorBridge<RavenJObject>(documents.Values<RavenJObject>().GetEnumerator()));
}
catch (Exception e)
{
if (retries-- == 0)
throw;
LastRequestErrored = true;
ShowProgress("Error reading from database, remaining attempts {0}, will retry. Error: {1}", retries, e, RetriesCount);
}
}
}
ShowProgress("Streaming documents from " + lastEtag);
return Commands.StreamDocsAsync(lastEtag);
}