public InfluxDBOutput(IInfluxDBHttpClient influxDBHttpClient, string path, ArrayPool <byte> arrayPool)
 {
     _influxDBHttpClient = influxDBHttpClient;
     _path      = path;
     _arrayPool = arrayPool;
     _task      = Read();
 }
        private InfluxDBClient(IInfluxDBHttpClient httpClient, string database, string?retentionPolicy,
                               Action <Exception>?errorCallback, int initialBufferSize,
                               int maxBufferSize, CancellationTokenSource cancellationTokenSource, TimeSpan?forceFlushInterval,
                               ArrayPool <byte> arrayPool)
        {
            _errorCallback = errorCallback;

            var path = retentionPolicy == null
                ? $"write?db={Uri.EscapeDataString(database)}&precision=ms"
                : $"write?db={Uri.EscapeDataString(database)}&precision=ms&rp={Uri.EscapeDataString(retentionPolicy)}";

            _bufferSize              = initialBufferSize;
            _maxBufferSize           = maxBufferSize;
            _arrayPool               = arrayPool;
            _cancellationTokenSource = cancellationTokenSource ?? new CancellationTokenSource();
            _memory = _arrayPool.Rent(initialBufferSize);

            if (forceFlushInterval != null)
            {
                _forceFlushInterval = forceFlushInterval.Value;
                _timer = new Timer(ForceFlush, null, _forceFlushInterval, _forceFlushInterval);
            }

            _output = new InfluxDBOutput(httpClient, path);
            _task   = Run(_cancellationTokenSource.Token);
        }
Exemple #3
0
        private InfluxDBChannel(IInfluxDBHttpClient httpClient, string database, string retentionPolicy, Action <Exception> errorCallback,
                                TimeSpan?forceFlushInterval, int channelCapacity)
        {
            _httpClient    = httpClient;
            _errorCallback = errorCallback;

            _path = retentionPolicy == null
                ? $"write?db={Uri.EscapeDataString(database)}&precision=ms"
                : $"write?db={Uri.EscapeDataString(database)}&precision=ms&rp={Uri.EscapeDataString(retentionPolicy)}";

            _channel = Channel.CreateBounded <LineCollection>(new BoundedChannelOptions(channelCapacity)
            {
                FullMode     = BoundedChannelFullMode.Wait,
                SingleReader = true
            });

            _lines = LineCollectionPool.Shared.Rent();

            _completion = Run();

            if (forceFlushInterval != null)
            {
                _forceFlushInterval = forceFlushInterval.Value;
                _timer = new Timer(ForceFlush, null, _forceFlushInterval, _forceFlushInterval);
            }
        }
Exemple #4
0
 private InfluxDBClientBuilder(IInfluxDBHttpClient httpClient, string database, string retentionPolicy,
                               Action <Exception> errorCallback, int initialBufferSize, int maxBufferSize, TimeSpan?forceFlushInterval)
 {
     _httpClient         = httpClient;
     _database           = database;
     _retentionPolicy    = retentionPolicy;
     _errorCallback      = errorCallback;
     _initialBufferSize  = initialBufferSize;
     _maxBufferSize      = maxBufferSize;
     _forceFlushInterval = forceFlushInterval;
 }
Exemple #5
0
        internal static InfluxDBClient Create(IInfluxDBHttpClient httpClient, string database, string retentionPolicy,
                                              Action <Exception> errorCallback,
                                              int initialBufferSize,
                                              int maxBufferSize,
                                              TimeSpan?forceFlushInterval)
        {
            if (httpClient == null)
            {
                throw new ArgumentNullException(nameof(httpClient));
            }
            if (string.IsNullOrEmpty(database))
            {
                throw new ArgumentException("Value cannot be null or empty.", nameof(database));
            }

            var cts      = new CancellationTokenSource();
            var instance = new InfluxDBClient(httpClient, database, retentionPolicy, errorCallback, initialBufferSize, maxBufferSize, cts, forceFlushInterval);

            return(instance);
        }
 public InfluxDBOutput(IInfluxDBHttpClient influxDBHttpClient, string path) : this(influxDBHttpClient, path, ArrayPool <byte> .Shared)
 {
 }
Exemple #7
0
 public InfluxDBOutput(IInfluxDBHttpClient influxDBHttpClient, string path)
 {
     _influxDBHttpClient = influxDBHttpClient;
     _path = path;
     _task = Read();
 }
Exemple #8
0
 /// <summary>
 /// Constructs a new instance of <see cref="InfluxDBClientBuilder"/>. For testing purposes only.
 /// </summary>
 /// <param name="httpClient">An <see cref="IInfluxDBHttpClient"/></param>
 /// <param name="database">The InfluxDB database</param>
 internal InfluxDBClientBuilder(IInfluxDBHttpClient httpClient, string database)
     : this(httpClient, database, null, null, DefaultInitialBufferSize, DefaultMaxBufferSize, null)
 {
 }