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); }