in src/AWS.Logger.Core/Core/AWSLoggerCore.cs [407:445]
private async Task SendMessages(CancellationToken token)
{
try
{
//Make sure the log events are in the right order.
_repo._request.LogEvents.Sort((ev1, ev2) => ev1.Timestamp.CompareTo(ev2.Timestamp));
var response = await _client.PutLogEventsAsync(_repo._request, token).ConfigureAwait(false);
_repo.Reset(response.NextSequenceToken);
_requestCount = 5;
}
catch (InvalidSequenceTokenException ex)
{
//In case the NextSequenceToken is invalid for the last sent message, a new stream would be
//created for the said application.
LogLibraryServiceError(ex);
if (_requestCount > 0)
{
_requestCount--;
var regexResult = invalid_sequence_token_regex.Match(ex.Message);
if (regexResult.Success)
{
_repo._request.SequenceToken = regexResult.Groups[1].Value;
await SendMessages(token).ConfigureAwait(false);
}
}
else
{
_currentStreamName = await LogEventTransmissionSetup(token).ConfigureAwait(false);
}
}
catch (ResourceNotFoundException ex)
{
// The specified log stream does not exist. Refresh or create new stream.
LogLibraryServiceError(ex);
_currentStreamName = await LogEventTransmissionSetup(token).ConfigureAwait(false);
}
}