public void HandleFailureMessage(string code, string message)
        {
            DequeueMessage();
            var parts          = code.Split('.');
            var classification = parts[1].ToLowerInvariant();

            switch (classification)
            {
            case "clienterror":
                Error = new ClientException(code, message);
                break;

            case "transienterror":
                Error = new TransientException(code, message);
                break;

            default:
                Error = new DatabaseException(code, message);
                break;
            }
            CurrentResultBuilder?.InvalidateResult(); // an error received, so the result is broken
            _logger?.Debug("S: ", new FailureMessage(code, message));
        }
 private void Interrupt()
 {
     // when receiving a reset, we will interrupt to not saving any incoming records by clean the result builder.
     CurrentResultBuilder?.InvalidateResult();
     CurrentResultBuilder = null;
 }
 public void HandleIgnoredMessage()
 {
     DequeueMessage();
     CurrentResultBuilder?.InvalidateResult(); // the result is ignored
     _logger?.Debug("S: ", new IgnoredMessage());
 }