Example #1
0
    internal BufferingWorker(ISignalFxMetricExporter exporter, int maxItems, Func <DataPointUploadMessage> uploadMessageFactory)
    {
        _exporter = exporter ?? throw new ArgumentNullException(nameof(exporter));
        if (uploadMessageFactory == null)
        {
            throw new ArgumentNullException(nameof(uploadMessageFactory));
        }

        // The same _uploadMessage instance is used on all export messages.
        _uploadMessage = uploadMessageFactory();
        if (maxItems < 1)
        {
            throw new ArgumentOutOfRangeException(nameof(maxItems), "MaxItems has to be greater or equal to 1");
        }

        _maxBufferSize = maxItems;
        // idle period similar to trace exporter
        _idlePeriod = TimeSpan.FromSeconds(1);
    }
    public AsyncSignalFxMetricWriter(ISignalFxMetricExporter exporter, int maxItems)
    {
        if (exporter == null)
        {
            throw new ArgumentNullException(nameof(exporter));
        }

        if (maxItems < 1)
        {
            throw new ArgumentOutOfRangeException(nameof(maxItems), "MaxItems has to be greater or equal to 1");
        }

        _worker = new AsynchronousWorker <DataPoint>(
            new BufferingWorker(exporter, maxItems),
            new Waiter(),
            1,
            maxItems,
            null);
    }
Example #3
0
 public BufferingWorker(ISignalFxMetricExporter exporter, int maxItems)
     : this(exporter, maxItems, InitUploadMessage)
 {
 }