diff --git a/sample/Benchmark/Benchmark.csproj b/sample/Benchmark/Benchmark.csproj index f4d71e2..f506b6b 100644 --- a/sample/Benchmark/Benchmark.csproj +++ b/sample/Benchmark/Benchmark.csproj @@ -1,7 +1,7 @@  - net461 + net472 Sample Sample diff --git a/sample/Sample-UDP-Support/Sample-UDP-Support.csproj b/sample/Sample-UDP-Support/Sample-UDP-Support.csproj index c4b4f3d..7e4310f 100644 --- a/sample/Sample-UDP-Support/Sample-UDP-Support.csproj +++ b/sample/Sample-UDP-Support/Sample-UDP-Support.csproj @@ -8,7 +8,7 @@ Exe Sample_UDP_Support Sample-UDP-Support - v4.6.1 + v4.7.2 512 true diff --git a/sample/Sample/Sample.csproj b/sample/Sample/Sample.csproj index d713742..e88ff31 100644 --- a/sample/Sample/Sample.csproj +++ b/sample/Sample/Sample.csproj @@ -1,7 +1,7 @@  - net461;netcoreapp2.0 + net472;netcoreapp2.1 Sample Sample diff --git a/src/InfluxDB.Collector/InfluxDB.Collector.csproj b/src/InfluxDB.Collector/InfluxDB.Collector.csproj index e902178..3f4c159 100644 --- a/src/InfluxDB.Collector/InfluxDB.Collector.csproj +++ b/src/InfluxDB.Collector/InfluxDB.Collector.csproj @@ -6,7 +6,7 @@ netstandard2.0 true InfluxDB.Collector - 1.1.1 + 1.2.0 InfluxDB.Collector influxdb https://raw.githubusercontent.com/influxdata/influxdb-csharp/master/asset/influxdata.jpg diff --git a/src/InfluxDB.LineProtocol/Client/ILineProtocolClient.cs b/src/InfluxDB.LineProtocol/Client/ILineProtocolClient.cs index 65dad59..f314c88 100644 --- a/src/InfluxDB.LineProtocol/Client/ILineProtocolClient.cs +++ b/src/InfluxDB.LineProtocol/Client/ILineProtocolClient.cs @@ -1,10 +1,11 @@ -using System.Threading; +using System; +using System.Threading; using System.Threading.Tasks; using InfluxDB.LineProtocol.Payload; namespace InfluxDB.LineProtocol.Client { - public interface ILineProtocolClient + public interface ILineProtocolClient : IDisposable { Task SendAsync( LineProtocolWriter lineProtocolWriter, diff --git a/src/InfluxDB.LineProtocol/Client/LineProtocolClient.cs b/src/InfluxDB.LineProtocol/Client/LineProtocolClient.cs index 279962c..a490dfd 100644 --- a/src/InfluxDB.LineProtocol/Client/LineProtocolClient.cs +++ b/src/InfluxDB.LineProtocol/Client/LineProtocolClient.cs @@ -80,5 +80,10 @@ protected override async Task OnSendAsync( return new LineProtocolWriteResult(false, $"{response.StatusCode} {response.ReasonPhrase} {body}"); } + + protected override void DisposeOfManagedResources() + { + _httpClient.Dispose(); + } } } diff --git a/src/InfluxDB.LineProtocol/Client/LineProtocolClientBase.cs b/src/InfluxDB.LineProtocol/Client/LineProtocolClientBase.cs index d7bb5ca..84b592c 100644 --- a/src/InfluxDB.LineProtocol/Client/LineProtocolClientBase.cs +++ b/src/InfluxDB.LineProtocol/Client/LineProtocolClientBase.cs @@ -13,6 +13,7 @@ namespace InfluxDB.LineProtocol.Client public abstract class LineProtocolClientBase : ILineProtocolClient { protected readonly string _database, _username, _password; + private volatile int _isDisposed; protected LineProtocolClientBase(Uri serverBaseAddress, string database, string username, string password) { @@ -41,9 +42,28 @@ protected LineProtocolClientBase(Uri serverBaseAddress, string database, string return OnSendAsync(lineProtocolWriter.ToString(), lineProtocolWriter.Precision, cancellationToken); } + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + protected abstract Task OnSendAsync( string payload, Precision precision, CancellationToken cancellationToken = default(CancellationToken)); + + protected void Dispose(bool disposing) + { + if (Interlocked.CompareExchange(ref _isDisposed, 1, 0) == 0) + { + if (disposing) + { + DisposeOfManagedResources(); + } + } + } + + protected abstract void DisposeOfManagedResources(); } } diff --git a/src/InfluxDB.LineProtocol/Client/LineProtocolUdpClient.cs b/src/InfluxDB.LineProtocol/Client/LineProtocolUdpClient.cs index e76be29..cc724fa 100644 --- a/src/InfluxDB.LineProtocol/Client/LineProtocolUdpClient.cs +++ b/src/InfluxDB.LineProtocol/Client/LineProtocolUdpClient.cs @@ -42,5 +42,10 @@ protected override async Task OnSendAsync( int len = await _udpClient.SendAsync(buffer, buffer.Length, _udpHostName, _udpPort); return new LineProtocolWriteResult(len == buffer.Length, null); } + + protected override void DisposeOfManagedResources() + { + _udpClient.Dispose(); + } } } diff --git a/src/InfluxDB.LineProtocol/InfluxDB.LineProtocol.csproj b/src/InfluxDB.LineProtocol/InfluxDB.LineProtocol.csproj index 5b7facb..14eaac8 100644 --- a/src/InfluxDB.LineProtocol/InfluxDB.LineProtocol.csproj +++ b/src/InfluxDB.LineProtocol/InfluxDB.LineProtocol.csproj @@ -1,10 +1,10 @@ - + A .NET library for efficiently sending time series to InfluxDB influxdb-csharp Contributors netstandard2.0 - 1.1.1 + 1.2.0 true InfluxDB.LineProtocol InfluxDB.LineProtocol diff --git a/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/App.config b/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/App.config index 016d28f..c57b49d 100644 --- a/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/App.config +++ b/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/App.config @@ -1,6 +1,6 @@ - + - + \ No newline at end of file diff --git a/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/InfluxDb.UdpSupport.ConsoleTest.csproj b/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/InfluxDb.UdpSupport.ConsoleTest.csproj index 6a88d2a..bd3be11 100644 --- a/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/InfluxDb.UdpSupport.ConsoleTest.csproj +++ b/test/Consoles/InfluxDb.UdpSupport.ConsoleTest/InfluxDb.UdpSupport.ConsoleTest.csproj @@ -8,7 +8,7 @@ Exe InfluxDb.UdpSupport.ConsoleTest InfluxDb.UdpSupport.ConsoleTest - v4.7 + v4.7.2 512 true diff --git a/test/InfluxDB.LineProtocol.Tests/InfluxDB.LineProtocol.Tests.csproj b/test/InfluxDB.LineProtocol.Tests/InfluxDB.LineProtocol.Tests.csproj index 44d713c..f83c722 100644 --- a/test/InfluxDB.LineProtocol.Tests/InfluxDB.LineProtocol.Tests.csproj +++ b/test/InfluxDB.LineProtocol.Tests/InfluxDB.LineProtocol.Tests.csproj @@ -1,10 +1,9 @@  - netcoreapp2.0 + netcoreapp2.1 InfluxDB.LineProtocol.Tests InfluxDB.LineProtocol.Tests - 2.0.0