public LineProtocolPayloadClient(LineProtocolClientOptions lineProtocolClientOptions, IInternalLogger logger = null) { _logger = logger; _lineProtocolClientOptions = lineProtocolClientOptions ?? throw new ArgumentNullException(nameof(lineProtocolClientOptions)); _lineProtocolClient = new InternalLineProtocolClient( _lineProtocolClientOptions.Server, _lineProtocolClientOptions.Database, _lineProtocolClientOptions.UserName, _lineProtocolClientOptions.Password); var interval = lineProtocolClientOptions.Interval.HasValue && lineProtocolClientOptions.Interval.Value > 0 ? lineProtocolClientOptions.Interval.Value : _defaultInterval; _blockCapacity = lineProtocolClientOptions.BlockCapacity.GetValueOrDefault(_defaultBlockCapacity); _pointMap = new ConcurrentDictionary <PointState, object>(); _flushTimer = new Timer(async state => await FlushCallback(state), null, TimeSpan.FromSeconds(interval), TimeSpan.FromSeconds(interval)); _logger?.LogInformation("Start LineProtocolCollector."); }
public static ApmComponentOptions AddLineProtocolCollector(this ApmComponentOptions apmComponent, Action <LineProtocolClientOptions> configure) { if (apmComponent == null) { throw new ArgumentNullException(nameof(apmComponent)); } if (configure == null) { throw new ArgumentNullException(nameof(configure)); } apmComponent.Services.AddType <IPayloadClientProvider, LineProtocolPayloadClientProvider>(Lifetime.Singleton); var lineProtocolClientOptions = new LineProtocolClientOptions(); configure(lineProtocolClientOptions); apmComponent.Services.AddInstance <IOptionAccessor <LineProtocolClientOptions> >(lineProtocolClientOptions); return(apmComponent); }