예제 #1
0
        public AWSBufferedSink(string id, string sessionName,
                               IAppDataFileProvider appDataFileProvider,
                               ILogger logger,
                               IMetrics metrics,
                               IBookmarkManager bookmarkManager,
                               NetworkStatus networkStatus,
                               AWSBufferedSinkOptions options)
        {
            Id                        = id;
            _logger                   = logger;
            _metrics                  = metrics;
            _bookmarkManager          = bookmarkManager;
            _networkStatus            = networkStatus;
            _bufferIntervalMs         = options.BufferIntervalMs;
            _format                   = options.Format;
            _maxSecondaryQueueBatches = options.QueueMaxBatches;
            var secondaryQueue = CreateSecondaryQueue(options, sessionName, appDataFileProvider, logger);

            _queue = new AsyncBatchQueue <Envelope <T> >(options.QueueSizeItems,
                                                         new long[] { options.MaxBatchSize, options.MaxBatchBytes },
                                                         new Func <Envelope <T>, long>[] { r => 1, GetRecordSize },
                                                         secondaryQueue);

            _maxAttempts             = options.MaxAttempts;
            _jittingFactor           = options.JittingFactor;
            _backoffFactor           = options.BackoffFactor;
            _recoveryFactor          = options.RecoveryFactor;
            _minRateAdjustmentFactor = options.MinRateAdjustmentFactor;
            _uploadNetworkPriority   = options.UploadNetworkPriority;

            if (options.TextDecoration is not null)
            {
                _textDecorationEvaluator = new TextDecorationEvaluator(options.TextDecoration, ResolveRecordVariables);
            }

            if (options.TextDecorationEx is not null)
            {
                _textDecorationEvaluator = new TextDecorationExEvaluator(options.TextDecorationEx, EvaluateVariable, ResolveRecordVariable, logger);
            }

            if (options.ObjectDecoration is not null)
            {
                _objectDecorationEvaluator = new ObjectDecorationEvaluator(options.ObjectDecoration, ResolveRecordVariables);
            }

            if (options.ObjectDecorationEx is not null)
            {
                _objectDecorationEvaluator = new ObjectDecorationExEvaluator(options.ObjectDecorationEx, EvaluateVariable, ResolveRecordVariable, logger);
            }
        }
예제 #2
0
        public EventSink(IPlugInContext context)
        {
            _context = context;
            _logger  = context.Logger;
            _config  = context.Configuration;
            _metrics = context.Metrics;
            Id       = _config?[ConfigConstants.ID];
            _format  = _config?[ConfigConstants.FORMAT];

            string textDecoration = _config?[ConfigConstants.TEXT_DECORATION];

            if (!string.IsNullOrWhiteSpace(textDecoration))
            {
                _textDecorationEvaluator = new TextDecorationEvaluator(textDecoration, ResolveRecordVariables);
            }

            string textDecorationEx = _config?[ConfigConstants.TEXT_DECORATION_EX];

            if (!string.IsNullOrWhiteSpace(textDecorationEx))
            {
                _textDecorationEvaluator = new TextDecorationExEvaluator(textDecorationEx, EvaluateVariable, ResolveRecordVariable, context);
            }

            string objectDecoration = _config?[ConfigConstants.OBJECT_DECORATION];

            if (!string.IsNullOrWhiteSpace(objectDecoration))
            {
                _objectDecorationEvaluator = new ObjectDecorationEvaluator(objectDecoration, ResolveRecordVariables);
            }

            string objectDecorationEx = _config?[ConfigConstants.OBJECT_DECORATION_EX];

            if (!string.IsNullOrWhiteSpace(objectDecorationEx))
            {
                _objectDecorationEvaluator = new ObjectDecorationExEvaluator(objectDecorationEx, EvaluateVariable, ResolveRecordVariable, context);
            }
            ValidateConfig();
        }