mirror of
https://github.com/JKorf/CryptoExchange.Net.git
synced 2026-08-14 18:02:58 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 19cc020852 | |||
| 1d4353e6d1 | |||
| a02b3f88d7 | |||
| af44ca4c9f | |||
| cf2b57bb96 |
@@ -6,16 +6,16 @@
|
|||||||
<PackageId>CryptoExchange.Net</PackageId>
|
<PackageId>CryptoExchange.Net</PackageId>
|
||||||
<Authors>JKorf</Authors>
|
<Authors>JKorf</Authors>
|
||||||
<Description>A base package for implementing cryptocurrency API's</Description>
|
<Description>A base package for implementing cryptocurrency API's</Description>
|
||||||
<PackageVersion>5.4.1</PackageVersion>
|
<PackageVersion>5.4.3</PackageVersion>
|
||||||
<AssemblyVersion>5.4.1</AssemblyVersion>
|
<AssemblyVersion>5.4.3</AssemblyVersion>
|
||||||
<FileVersion>5.4.1</FileVersion>
|
<FileVersion>5.4.3</FileVersion>
|
||||||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
||||||
<RepositoryType>git</RepositoryType>
|
<RepositoryType>git</RepositoryType>
|
||||||
<RepositoryUrl>https://github.com/JKorf/CryptoExchange.Net.git</RepositoryUrl>
|
<RepositoryUrl>https://github.com/JKorf/CryptoExchange.Net.git</RepositoryUrl>
|
||||||
<PackageProjectUrl>https://github.com/JKorf/CryptoExchange.Net</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/JKorf/CryptoExchange.Net</PackageProjectUrl>
|
||||||
<NeutralLanguage>en</NeutralLanguage>
|
<NeutralLanguage>en</NeutralLanguage>
|
||||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
<PackageReleaseNotes>5.4.1 - Added CalculateTradableAmount to SymbolOrderBook, Improved socket reconnect robustness, Fixed api rate limiter not working correctly</PackageReleaseNotes>
|
<PackageReleaseNotes>5.4.3 - Fixed potential threading exception in socket connection</PackageReleaseNotes>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<LangVersion>9.0</LangVersion>
|
<LangVersion>9.0</LangVersion>
|
||||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
|
|||||||
@@ -211,16 +211,8 @@ namespace CryptoExchange.Net.Sockets
|
|||||||
while (_closeTask == null)
|
while (_closeTask == null)
|
||||||
await Task.Delay(50).ConfigureAwait(false);
|
await Task.Delay(50).ConfigureAwait(false);
|
||||||
|
|
||||||
await _closeSem.WaitAsync().ConfigureAwait(false);
|
await _closeTask.ConfigureAwait(false);
|
||||||
try
|
_closeTask = null;
|
||||||
{
|
|
||||||
await _closeTask.ConfigureAwait(false);
|
|
||||||
_closeTask = null;
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
_closeSem.Release();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Parameters.AutoReconnect)
|
if (!Parameters.AutoReconnect)
|
||||||
{
|
{
|
||||||
@@ -293,19 +285,8 @@ namespace CryptoExchange.Net.Sockets
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
_log.Write(LogLevel.Debug, $"Socket {Id} reconnect requested");
|
_log.Write(LogLevel.Debug, $"Socket {Id} reconnect requested");
|
||||||
await _closeSem.WaitAsync().ConfigureAwait(false);
|
_closeTask = CloseInternalAsync();
|
||||||
try
|
await _closeTask.ConfigureAwait(false);
|
||||||
{
|
|
||||||
if (_processState != ProcessState.Processing)
|
|
||||||
return;
|
|
||||||
|
|
||||||
_closeTask = CloseInternalAsync();
|
|
||||||
await _closeTask.ConfigureAwait(false);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
_closeSem.Release();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
@@ -449,19 +430,8 @@ namespace CryptoExchange.Net.Sockets
|
|||||||
{
|
{
|
||||||
// Connection closed unexpectedly, .NET framework
|
// Connection closed unexpectedly, .NET framework
|
||||||
OnError?.Invoke(ioe);
|
OnError?.Invoke(ioe);
|
||||||
await _closeSem.WaitAsync().ConfigureAwait(false);
|
if (_closeTask?.IsCompleted != false)
|
||||||
try
|
_closeTask = CloseInternalAsync();
|
||||||
{
|
|
||||||
if (_processState != ProcessState.Processing)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_closeTask?.IsCompleted != false)
|
|
||||||
_closeTask = CloseInternalAsync();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
_closeSem.Release();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -518,17 +488,8 @@ namespace CryptoExchange.Net.Sockets
|
|||||||
{
|
{
|
||||||
// Connection closed unexpectedly
|
// Connection closed unexpectedly
|
||||||
OnError?.Invoke(wse);
|
OnError?.Invoke(wse);
|
||||||
await _closeSem.WaitAsync().ConfigureAwait(false);
|
if (_closeTask?.IsCompleted != false)
|
||||||
try
|
_closeTask = CloseInternalAsync();
|
||||||
{
|
|
||||||
if (_processState == ProcessState.Processing && _closeTask?.IsCompleted != false)
|
|
||||||
_closeTask = CloseInternalAsync();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
_closeSem.Release();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -536,17 +497,8 @@ namespace CryptoExchange.Net.Sockets
|
|||||||
{
|
{
|
||||||
// Connection closed unexpectedly
|
// Connection closed unexpectedly
|
||||||
_log.Write(LogLevel.Debug, $"Socket {Id} received `Close` message");
|
_log.Write(LogLevel.Debug, $"Socket {Id} received `Close` message");
|
||||||
await _closeSem.WaitAsync().ConfigureAwait(false);
|
if (_closeTask?.IsCompleted != false)
|
||||||
try
|
_closeTask = CloseInternalAsync();
|
||||||
{
|
|
||||||
if (_processState == ProcessState.Processing && _closeTask?.IsCompleted != false)
|
|
||||||
_closeTask = CloseInternalAsync();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
_closeSem.Release();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -629,7 +629,11 @@ namespace CryptoExchange.Net.Sockets
|
|||||||
return new CallResult<bool>(true);
|
return new CallResult<bool>(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_subscriptions.Any(s => s.Authenticated))
|
bool anyAuthenticated = false;
|
||||||
|
lock (_subscriptionLock)
|
||||||
|
anyAuthenticated = _subscriptions.Any(s => s.Authenticated);
|
||||||
|
|
||||||
|
if (anyAuthenticated)
|
||||||
{
|
{
|
||||||
// If we reconnected a authenticated connection we need to re-authenticate
|
// If we reconnected a authenticated connection we need to re-authenticate
|
||||||
var authResult = await ApiClient.AuthenticateSocketAsync(this).ConfigureAwait(false);
|
var authResult = await ApiClient.AuthenticateSocketAsync(this).ConfigureAwait(false);
|
||||||
|
|||||||
@@ -33,6 +33,12 @@ Make a one time donation in a crypto currency of your choice. If you prefer to d
|
|||||||
Alternatively, sponsor me on Github using [Github Sponsors](https://github.com/sponsors/JKorf).
|
Alternatively, sponsor me on Github using [Github Sponsors](https://github.com/sponsors/JKorf).
|
||||||
|
|
||||||
## Release notes
|
## Release notes
|
||||||
|
* Version 5.4.3 - 14 Apr 2023
|
||||||
|
* Fixed potential threading exception in socket connection
|
||||||
|
|
||||||
|
* Version 5.4.2 - 01 Apr 2023
|
||||||
|
* Reverted socket changes as it seems to cause reconnect to hang
|
||||||
|
|
||||||
* Version 5.4.1 - 18 Mar 2023
|
* Version 5.4.1 - 18 Mar 2023
|
||||||
* Added CalculateTradableAmount to SymbolOrderBook
|
* Added CalculateTradableAmount to SymbolOrderBook
|
||||||
* Improved socket reconnect robustness
|
* Improved socket reconnect robustness
|
||||||
|
|||||||
Reference in New Issue
Block a user