/// <summary> /// Method to transmit the PutLogEvent Request /// </summary> /// <param name="token"></param> /// <returns></returns> private async Task SendMessages(CancellationToken token) { try { var response = await _client.PutLogEventsAsync(_repo._request, token).ConfigureAwait(false); _repo.Reset(response.NextSequenceToken); } catch (TaskCanceledException tc) { // TODO how to log ? LogLibraryError(tc); throw; } catch (Exception e) { //In case the NextSequenceToken is invalid for the last sent message, a new stream would be //created for the said application. // TODO how to log ? LogLibraryError(e); await LogEventTransmissionSetup(token).ConfigureAwait(false); } }
/// <summary> /// Method to transmit the PutLogEvent Request /// </summary> /// <param name="token"></param> /// <returns></returns> private async Task SendMessages(CancellationToken token) { try { 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. LogLibraryError(ex, _config.LibraryLogFileName); 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 { await LogEventTransmissionSetup(token).ConfigureAwait(false); } } }
/// <summary> /// Method to transmit the PutLogEvent Request /// </summary> /// <param name="token"></param> /// <returns></returns> 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); } } }