diff --git a/CryptoExchange.Net.UnitTests/AsyncResetEventTests.cs b/CryptoExchange.Net.UnitTests/AsyncResetEventTests.cs index 992d2df..78bab0f 100644 --- a/CryptoExchange.Net.UnitTests/AsyncResetEventTests.cs +++ b/CryptoExchange.Net.UnitTests/AsyncResetEventTests.cs @@ -4,7 +4,6 @@ using NUnit.Framework.Legacy; using System; using System.Collections.Generic; using System.Linq; -using System.Text; using System.Threading.Tasks; namespace CryptoExchange.Net.UnitTests diff --git a/CryptoExchange.Net.UnitTests/BaseClientTests.cs b/CryptoExchange.Net.UnitTests/BaseClientTests.cs index f64b00e..aae4a95 100644 --- a/CryptoExchange.Net.UnitTests/BaseClientTests.cs +++ b/CryptoExchange.Net.UnitTests/BaseClientTests.cs @@ -1,11 +1,5 @@ -using CryptoExchange.Net.Authentication; -using CryptoExchange.Net.Objects; -using CryptoExchange.Net.UnitTests.TestImplementations; -using Microsoft.Extensions.Logging; -using NUnit.Framework; +using NUnit.Framework; using NUnit.Framework.Legacy; -using System; -using System.Collections.Generic; namespace CryptoExchange.Net.UnitTests { diff --git a/CryptoExchange.Net.UnitTests/CallResultTests.cs b/CryptoExchange.Net.UnitTests/CallResultTests.cs index 80c6532..51eaa65 100644 --- a/CryptoExchange.Net.UnitTests/CallResultTests.cs +++ b/CryptoExchange.Net.UnitTests/CallResultTests.cs @@ -4,11 +4,8 @@ using NUnit.Framework; using NUnit.Framework.Legacy; using System; using System.Collections.Generic; -using System.Linq; using System.Net; using System.Net.Http; -using System.Text; -using System.Threading.Tasks; namespace CryptoExchange.Net.UnitTests { diff --git a/CryptoExchange.Net.UnitTests/ExchangeHelpersTests.cs b/CryptoExchange.Net.UnitTests/ExchangeHelpersTests.cs index 2fcdae0..a9808fb 100644 --- a/CryptoExchange.Net.UnitTests/ExchangeHelpersTests.cs +++ b/CryptoExchange.Net.UnitTests/ExchangeHelpersTests.cs @@ -1,7 +1,5 @@ using CryptoExchange.Net.Objects; using NUnit.Framework; -using NUnit.Framework.Legacy; -using System.Diagnostics; using System.Globalization; namespace CryptoExchange.Net.UnitTests diff --git a/CryptoExchange.Net.UnitTests/OptionsTests.cs b/CryptoExchange.Net.UnitTests/OptionsTests.cs index 7af2ac2..3f4340d 100644 --- a/CryptoExchange.Net.UnitTests/OptionsTests.cs +++ b/CryptoExchange.Net.UnitTests/OptionsTests.cs @@ -1,15 +1,8 @@ using CryptoExchange.Net.Authentication; -using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Options; using CryptoExchange.Net.UnitTests.TestImplementations; -using Microsoft.Extensions.Logging; using NUnit.Framework; -using NUnit.Framework.Legacy; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace CryptoExchange.Net.UnitTests { diff --git a/CryptoExchange.Net.UnitTests/RestClientTests.cs b/CryptoExchange.Net.UnitTests/RestClientTests.cs index 57f1f08..e7c790b 100644 --- a/CryptoExchange.Net.UnitTests/RestClientTests.cs +++ b/CryptoExchange.Net.UnitTests/RestClientTests.cs @@ -9,7 +9,6 @@ using System.Threading.Tasks; using System.Threading; using NUnit.Framework.Legacy; using CryptoExchange.Net.RateLimiting; -using System.Net; using CryptoExchange.Net.RateLimiting.Guards; using CryptoExchange.Net.RateLimiting.Filters; using CryptoExchange.Net.RateLimiting.Interfaces; diff --git a/CryptoExchange.Net.UnitTests/SystemTextJsonConverterTests.cs b/CryptoExchange.Net.UnitTests/SystemTextJsonConverterTests.cs index 3270ffc..755f79f 100644 --- a/CryptoExchange.Net.UnitTests/SystemTextJsonConverterTests.cs +++ b/CryptoExchange.Net.UnitTests/SystemTextJsonConverterTests.cs @@ -4,9 +4,7 @@ using System.Text.Json; using NUnit.Framework; using System; using System.Text.Json.Serialization; -using NUnit.Framework.Legacy; using CryptoExchange.Net.Converters; -using CryptoExchange.Net.Testing.Comparers; using CryptoExchange.Net.SharedApis; namespace CryptoExchange.Net.UnitTests diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestChannelQuery.cs b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestChannelQuery.cs index 431dd7a..a143691 100644 --- a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestChannelQuery.cs +++ b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestChannelQuery.cs @@ -2,8 +2,8 @@ using CryptoExchange.Net.Objects.Errors; using CryptoExchange.Net.Objects.Sockets; using CryptoExchange.Net.Sockets; +using CryptoExchange.Net.Sockets.Default; using System; -using System.Collections.Generic; using System.Text.Json.Serialization; namespace CryptoExchange.Net.UnitTests.TestImplementations.Sockets diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestQuery.cs b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestQuery.cs index f2302b6..48a41fb 100644 --- a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestQuery.cs +++ b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestQuery.cs @@ -1,9 +1,4 @@ using CryptoExchange.Net.Sockets; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace CryptoExchange.Net.UnitTests.TestImplementations.Sockets { diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscription.cs b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscription.cs index 9d01c31..330d997 100644 --- a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscription.cs +++ b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscription.cs @@ -1,13 +1,9 @@ -using CryptoExchange.Net.Interfaces; -using CryptoExchange.Net.Objects; +using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Sockets; using CryptoExchange.Net.Sockets; +using CryptoExchange.Net.Sockets.Default; using Microsoft.Extensions.Logging; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace CryptoExchange.Net.UnitTests.TestImplementations.Sockets { diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscriptionWithResponseCheck.cs b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscriptionWithResponseCheck.cs index 4d52563..4778728 100644 --- a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscriptionWithResponseCheck.cs +++ b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscriptionWithResponseCheck.cs @@ -1,12 +1,10 @@ -using CryptoExchange.Net.Interfaces; -using CryptoExchange.Net.Objects; +using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Sockets; using CryptoExchange.Net.Sockets; +using CryptoExchange.Net.Sockets.Default; using Microsoft.Extensions.Logging; using Moq; using System; -using System.Collections.Generic; -using System.Threading.Tasks; namespace CryptoExchange.Net.UnitTests.TestImplementations.Sockets { diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/TestBaseClient.cs b/CryptoExchange.Net.UnitTests/TestImplementations/TestBaseClient.cs index 176cff4..38cc876 100644 --- a/CryptoExchange.Net.UnitTests/TestImplementations/TestBaseClient.cs +++ b/CryptoExchange.Net.UnitTests/TestImplementations/TestBaseClient.cs @@ -1,9 +1,6 @@ using System; -using System.Collections.Generic; using System.IO; -using System.Net.Http; using System.Text; -using System.Text.Json.Serialization; using System.Threading.Tasks; using CryptoExchange.Net.Authentication; using CryptoExchange.Net.Clients; @@ -13,7 +10,6 @@ using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Errors; using CryptoExchange.Net.Objects.Options; using CryptoExchange.Net.SharedApis; -using CryptoExchange.Net.UnitTests.TestImplementations; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs b/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs index 2035639..fefd893 100644 --- a/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs +++ b/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs @@ -13,13 +13,12 @@ using CryptoExchange.Net.Authentication; using System.Collections.Generic; using Microsoft.Extensions.Logging; using CryptoExchange.Net.Clients; -using CryptoExchange.Net.SharedApis; using Microsoft.Extensions.Options; using System.Linq; using CryptoExchange.Net.Converters.SystemTextJson; using System.Text.Json.Serialization; -using CryptoExchange.Net.Objects.Errors; using System.Net.Http.Headers; +using CryptoExchange.Net.SharedApis; namespace CryptoExchange.Net.UnitTests.TestImplementations { diff --git a/CryptoExchange.Net.UnitTests/TestSerializerContext.cs b/CryptoExchange.Net.UnitTests/TestSerializerContext.cs index e3dfe5b..ce23994 100644 --- a/CryptoExchange.Net.UnitTests/TestSerializerContext.cs +++ b/CryptoExchange.Net.UnitTests/TestSerializerContext.cs @@ -1,10 +1,6 @@ using CryptoExchange.Net.UnitTests.TestImplementations; -using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Text.Json.Serialization; -using System.Threading.Tasks; namespace CryptoExchange.Net.UnitTests { diff --git a/CryptoExchange.Net/Authentication/AuthenticationProvider.cs b/CryptoExchange.Net/Authentication/AuthenticationProvider.cs index d1c5a28..f6a291d 100644 --- a/CryptoExchange.Net/Authentication/AuthenticationProvider.cs +++ b/CryptoExchange.Net/Authentication/AuthenticationProvider.cs @@ -5,7 +5,6 @@ using CryptoExchange.Net.Objects; using System; using System.Collections.Generic; using System.Globalization; -using System.Net.Http; using System.Security.Cryptography; using System.Text; diff --git a/CryptoExchange.Net/Clients/BaseApiClient.cs b/CryptoExchange.Net/Clients/BaseApiClient.cs index 7806e1f..c2eab52 100644 --- a/CryptoExchange.Net/Clients/BaseApiClient.cs +++ b/CryptoExchange.Net/Clients/BaseApiClient.cs @@ -1,8 +1,6 @@ using System; -using System.Collections.Generic; using CryptoExchange.Net.Authentication; -using CryptoExchange.Net.Interfaces; -using CryptoExchange.Net.Objects; +using CryptoExchange.Net.Interfaces.Clients; using CryptoExchange.Net.Objects.Errors; using CryptoExchange.Net.Objects.Options; using CryptoExchange.Net.SharedApis; diff --git a/CryptoExchange.Net/Clients/BaseClient.cs b/CryptoExchange.Net/Clients/BaseClient.cs index bd91d53..919346e 100644 --- a/CryptoExchange.Net/Clients/BaseClient.cs +++ b/CryptoExchange.Net/Clients/BaseClient.cs @@ -1,7 +1,6 @@ using CryptoExchange.Net.Authentication; using CryptoExchange.Net.Objects.Options; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Logging.Abstractions; using System; using System.Collections.Generic; using System.Threading; diff --git a/CryptoExchange.Net/Clients/BaseRestClient.cs b/CryptoExchange.Net/Clients/BaseRestClient.cs index 797dace..057127d 100644 --- a/CryptoExchange.Net/Clients/BaseRestClient.cs +++ b/CryptoExchange.Net/Clients/BaseRestClient.cs @@ -1,5 +1,5 @@ using System.Linq; -using CryptoExchange.Net.Interfaces; +using CryptoExchange.Net.Interfaces.Clients; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; diff --git a/CryptoExchange.Net/Clients/BaseSocketClient.cs b/CryptoExchange.Net/Clients/BaseSocketClient.cs index f5054e2..6296998 100644 --- a/CryptoExchange.Net/Clients/BaseSocketClient.cs +++ b/CryptoExchange.Net/Clients/BaseSocketClient.cs @@ -1,4 +1,4 @@ -using CryptoExchange.Net.Interfaces; +using CryptoExchange.Net.Interfaces.Clients; using CryptoExchange.Net.Logging.Extensions; using CryptoExchange.Net.Objects.Options; using CryptoExchange.Net.Objects.Sockets; @@ -9,7 +9,6 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -using System.Xml.Linq; namespace CryptoExchange.Net.Clients { diff --git a/CryptoExchange.Net/Clients/CryptoRestClient.cs b/CryptoExchange.Net/Clients/CryptoRestClient.cs index d4ee0bb..1907661 100644 --- a/CryptoExchange.Net/Clients/CryptoRestClient.cs +++ b/CryptoExchange.Net/Clients/CryptoRestClient.cs @@ -1,8 +1,5 @@ -using CryptoExchange.Net.Interfaces; -using Microsoft.Extensions.DependencyInjection; +using CryptoExchange.Net.Interfaces.Clients; using System; -using System.Collections.Generic; -using System.Linq; namespace CryptoExchange.Net.Clients { diff --git a/CryptoExchange.Net/Clients/CryptoSocketClient.cs b/CryptoExchange.Net/Clients/CryptoSocketClient.cs index 5c33ef9..4e41c63 100644 --- a/CryptoExchange.Net/Clients/CryptoSocketClient.cs +++ b/CryptoExchange.Net/Clients/CryptoSocketClient.cs @@ -1,4 +1,4 @@ -using CryptoExchange.Net.Interfaces; +using CryptoExchange.Net.Interfaces.Clients; using System; namespace CryptoExchange.Net.Clients diff --git a/CryptoExchange.Net/Clients/RestApiClient.cs b/CryptoExchange.Net/Clients/RestApiClient.cs index bfa1b2a..ddaeaf7 100644 --- a/CryptoExchange.Net/Clients/RestApiClient.cs +++ b/CryptoExchange.Net/Clients/RestApiClient.cs @@ -1,6 +1,7 @@ using CryptoExchange.Net.Caching; using CryptoExchange.Net.Converters.MessageParsing.DynamicConverters; using CryptoExchange.Net.Interfaces; +using CryptoExchange.Net.Interfaces.Clients; using CryptoExchange.Net.Logging.Extensions; using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Errors; @@ -18,7 +19,6 @@ using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Text; -using System.Text.Json; using System.Threading; using System.Threading.Tasks; diff --git a/CryptoExchange.Net/Clients/SocketApiClient.cs b/CryptoExchange.Net/Clients/SocketApiClient.cs index 86203cb..f08cd08 100644 --- a/CryptoExchange.Net/Clients/SocketApiClient.cs +++ b/CryptoExchange.Net/Clients/SocketApiClient.cs @@ -1,5 +1,6 @@ using CryptoExchange.Net.Converters.MessageParsing.DynamicConverters; using CryptoExchange.Net.Interfaces; +using CryptoExchange.Net.Interfaces.Clients; using CryptoExchange.Net.Logging.Extensions; using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Errors; @@ -8,7 +9,11 @@ using CryptoExchange.Net.Objects.Sockets; using CryptoExchange.Net.RateLimiting; using CryptoExchange.Net.RateLimiting.Interfaces; using CryptoExchange.Net.Sockets; +using CryptoExchange.Net.Sockets.Default; +using CryptoExchange.Net.Sockets.Default.Interfaces; using CryptoExchange.Net.Sockets.HighPerf; +using CryptoExchange.Net.Sockets.HighPerf.Interfaces; +using CryptoExchange.Net.Sockets.Interfaces; using Microsoft.Extensions.Logging; using System; using System.Collections.Concurrent; @@ -29,16 +34,18 @@ namespace CryptoExchange.Net.Clients #region Fields /// public IWebsocketFactory SocketFactory { get; set; } = new WebsocketFactory(); + /// + public IHighPerfConnectionFactory? HighPerfConnectionFactory { get; set; } /// /// List of socket connections currently connecting/connected /// - protected internal ConcurrentDictionary socketConnections = new(); + protected internal ConcurrentDictionary _socketConnections = new(); /// /// List of HighPerf socket connections currently connecting/connected /// - protected internal ConcurrentDictionary highPerfSocketConnections = new(); + protected internal ConcurrentDictionary _highPerfSocketConnections = new(); /// /// Semaphore used while creating sockets @@ -100,25 +107,25 @@ namespace CryptoExchange.Net.Clients { get { - if (socketConnections.IsEmpty) + if (_socketConnections.IsEmpty) return 0; - return socketConnections.Sum(s => s.Value.IncomingKbps); + return _socketConnections.Sum(s => s.Value.IncomingKbps); } } /// - public int CurrentConnections => socketConnections.Count; + public int CurrentConnections => _socketConnections.Count; /// public int CurrentSubscriptions { get { - if (socketConnections.IsEmpty) + if (_socketConnections.IsEmpty) return 0; - return socketConnections.Sum(s => s.Value.UserSubscriptionCount); + return _socketConnections.Sum(s => s.Value.UserSubscriptionCount); } } @@ -569,7 +576,7 @@ namespace CryptoExchange.Net.Clients protected void AddSystemSubscription(SystemSubscription systemSubscription) { systemSubscriptions.Add(systemSubscription); - foreach (var connection in socketConnections.Values) + foreach (var connection in _socketConnections.Values) connection.AddSubscription(systemSubscription); } @@ -615,7 +622,7 @@ namespace CryptoExchange.Net.Clients /// protected virtual async Task> GetSocketConnection(string address, bool authenticated, bool dedicatedRequestConnection, CancellationToken ct, string? topic = null) { - var socketQuery = socketConnections.Where(s => s.Value.Tag.TrimEnd('/') == address.TrimEnd('/') + var socketQuery = _socketConnections.Where(s => s.Value.Tag.TrimEnd('/') == address.TrimEnd('/') && s.Value.ApiClient.GetType() == GetType() && (AllowTopicsOnTheSameConnection || !s.Value.Topics.Contains(topic))) .Select(x => x.Value) @@ -668,7 +675,7 @@ namespace CryptoExchange.Net.Clients if (connection != null) { if (connection.UserSubscriptionCount < ClientOptions.SocketSubscriptionsCombineTarget - || (socketConnections.Count >= (ApiOptions.MaxSocketConnections ?? ClientOptions.MaxSocketConnections) && socketConnections.All(s => s.Value.UserSubscriptionCount >= ClientOptions.SocketSubscriptionsCombineTarget))) + || (_socketConnections.Count >= (ApiOptions.MaxSocketConnections ?? ClientOptions.MaxSocketConnections) && _socketConnections.All(s => s.Value.UserSubscriptionCount >= ClientOptions.SocketSubscriptionsCombineTarget))) { // Use existing socket if it has less than target connections OR it has the least connections and we can't make new return new CallResult(connection); @@ -720,27 +727,6 @@ namespace CryptoExchange.Net.Clients IHighPerfConnectionFactory connectionFactory, CancellationToken ct) { - var socketQuery = highPerfSocketConnections.Where(s => s.Value.Tag.TrimEnd('/') == address.TrimEnd('/') - && s.Value.ApiClient.GetType() == GetType() - && s.Value.UpdateType == typeof(TUpdateType)) - .Select(x => x.Value) - .ToList(); - - - socketQuery = socketQuery.Where(s => (s.Status == SocketStatus.None || s.Status == SocketStatus.Connected) - && s.Connected).ToList(); - - var connection = socketQuery.OrderBy(s => s.UserSubscriptionCount).FirstOrDefault(); - if (connection != null) - { - if (connection.UserSubscriptionCount < ClientOptions.SocketSubscriptionsCombineTarget - || (socketConnections.Count >= (ApiOptions.MaxSocketConnections ?? ClientOptions.MaxSocketConnections) && socketConnections.All(s => s.Value.UserSubscriptionCount >= ClientOptions.SocketSubscriptionsCombineTarget))) - { - // Use existing socket if it has less than target connections OR it has the least connections and we can't make new - return new CallResult>((HighPerfSocketConnection)connection); - } - } - var connectionAddress = await GetConnectionUrlAsync(address, false).ConfigureAwait(false); if (!connectionAddress) { @@ -794,9 +780,9 @@ namespace CryptoExchange.Net.Clients if (connectResult) { if (socketConnection is SocketConnection sc) - socketConnections.TryAdd(socketConnection.SocketId, sc); + _socketConnections.TryAdd(socketConnection.SocketId, sc); else if (socketConnection is HighPerfSocketConnection hsc) - highPerfSocketConnections.TryAdd(socketConnection.SocketId, hsc); + _highPerfSocketConnections.TryAdd(socketConnection.SocketId, hsc); return connectResult; } @@ -832,7 +818,7 @@ namespace CryptoExchange.Net.Clients { Subscription? subscription = null; SocketConnection? connection = null; - foreach (var socket in socketConnections.Values.ToList()) + foreach (var socket in _socketConnections.Values.ToList()) { subscription = socket.GetSubscription(subscriptionId); if (subscription != null) @@ -870,14 +856,14 @@ namespace CryptoExchange.Net.Clients /// public virtual async Task UnsubscribeAllAsync() { - var sum = socketConnections.Sum(s => s.Value.UserSubscriptionCount); + var sum = _socketConnections.Sum(s => s.Value.UserSubscriptionCount); if (sum == 0) return; - _logger.UnsubscribingAll(socketConnections.Sum(s => s.Value.UserSubscriptionCount)); + _logger.UnsubscribingAll(_socketConnections.Sum(s => s.Value.UserSubscriptionCount)); var tasks = new List(); { - var socketList = socketConnections.Values; + var socketList = _socketConnections.Values; foreach (var connection in socketList) { foreach(var subscription in connection.Subscriptions.Where(x => x.UserSubscription)) @@ -894,10 +880,10 @@ namespace CryptoExchange.Net.Clients /// public virtual async Task ReconnectAsync() { - _logger.ReconnectingAllConnections(socketConnections.Count); + _logger.ReconnectingAllConnections(_socketConnections.Count); var tasks = new List(); { - var socketList = socketConnections.Values; + var socketList = _socketConnections.Values; foreach (var sub in socketList) tasks.Add(sub.TriggerReconnectAsync()); } @@ -929,7 +915,7 @@ namespace CryptoExchange.Net.Clients base.SetOptions(options); if ((!previousProxyIsSet && options.Proxy == null) - || socketConnections.IsEmpty) + || _socketConnections.IsEmpty) { return; } @@ -937,7 +923,7 @@ namespace CryptoExchange.Net.Clients _logger.LogInformation("Reconnecting websockets to apply proxy"); // Update proxy, also triggers reconnect - foreach (var connection in socketConnections) + foreach (var connection in _socketConnections) _ = connection.Value.UpdateProxy(options.Proxy); } @@ -957,14 +943,14 @@ namespace CryptoExchange.Net.Clients public SocketApiClientState GetState(bool includeSubDetails = true) { var connectionStates = new List(); - foreach (var socketIdAndConnection in socketConnections) + foreach (var socketIdAndConnection in _socketConnections) { SocketConnection connection = socketIdAndConnection.Value; SocketConnectionState connectionState = connection.GetState(includeSubDetails); connectionStates.Add(connectionState); } - return new SocketApiClientState(socketConnections.Count, CurrentSubscriptions, IncomingKbps, connectionStates); + return new SocketApiClientState(_socketConnections.Count, CurrentSubscriptions, IncomingKbps, connectionStates); } /// @@ -1026,7 +1012,7 @@ namespace CryptoExchange.Net.Clients _disposing = true; var tasks = new List(); { - var socketList = socketConnections.Values.Where(x => x.UserSubscriptionCount > 0 || x.Connected); + var socketList = _socketConnections.Values.Where(x => x.UserSubscriptionCount > 0 || x.Connected); if (socketList.Any()) _logger.DisposingSocketClient(); diff --git a/CryptoExchange.Net/Converters/JsonSerializerContextCache.cs b/CryptoExchange.Net/Converters/JsonSerializerContextCache.cs index 55cb48f..46473c1 100644 --- a/CryptoExchange.Net/Converters/JsonSerializerContextCache.cs +++ b/CryptoExchange.Net/Converters/JsonSerializerContextCache.cs @@ -1,7 +1,5 @@ using System; using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Text; using System.Text.Json.Serialization; namespace CryptoExchange.Net.Converters diff --git a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/IRestMessageHandler.cs b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/IRestMessageHandler.cs index 0e62939..2152a67 100644 --- a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/IRestMessageHandler.cs +++ b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/IRestMessageHandler.cs @@ -1,9 +1,6 @@ using CryptoExchange.Net.Objects; -using System; -using System.Collections.Generic; using System.IO; using System.Net.Http.Headers; -using System.Net.WebSockets; using System.Threading; using System.Threading.Tasks; diff --git a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageConverterTypes.cs b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageConverterTypes.cs index bccb2db..5314aae 100644 --- a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageConverterTypes.cs +++ b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageConverterTypes.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace CryptoExchange.Net.Converters.MessageParsing.DynamicConverters { diff --git a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageEvalutorFieldReference.cs b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageEvalutorFieldReference.cs index 6ceaedd..df93ba7 100644 --- a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageEvalutorFieldReference.cs +++ b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageEvalutorFieldReference.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.Converters.MessageParsing.DynamicConverters +namespace CryptoExchange.Net.Converters.MessageParsing.DynamicConverters { internal class MessageEvalutorFieldReference { diff --git a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResult.cs b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResult.cs index 74f5822..1ab9f18 100644 --- a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResult.cs +++ b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResult.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Text; namespace CryptoExchange.Net.Converters.MessageParsing.DynamicConverters { diff --git a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResultItem.cs b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResultItem.cs index 4618ccb..bd9c4d5 100644 --- a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResultItem.cs +++ b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResultItem.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.Converters.MessageParsing.DynamicConverters +namespace CryptoExchange.Net.Converters.MessageParsing.DynamicConverters { /// /// Search result value diff --git a/CryptoExchange.Net/Converters/SystemTextJson/ArrayConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/ArrayConverter.cs index c378ebc..d45a41c 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/ArrayConverter.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/ArrayConverter.cs @@ -1,15 +1,12 @@ using System; -using System.Collections.Concurrent; using System.Globalization; using System.Linq; using System.Reflection; using System.Text.Json.Serialization; using System.Text.Json; -using CryptoExchange.Net.Attributes; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Threading; -using System.Diagnostics; namespace CryptoExchange.Net.Converters.SystemTextJson { diff --git a/CryptoExchange.Net/Converters/SystemTextJson/BoolConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/BoolConverter.cs index 75ce2b6..775ddde 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/BoolConverter.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/BoolConverter.cs @@ -1,6 +1,5 @@ using Microsoft.Extensions.Logging; using System; -using System.Diagnostics; using System.Runtime.Serialization; using System.Text.Json; using System.Text.Json.Serialization; diff --git a/CryptoExchange.Net/Converters/SystemTextJson/CommaSplitEnumConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/CommaSplitEnumConverter.cs index c327079..1bdc623 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/CommaSplitEnumConverter.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/CommaSplitEnumConverter.cs @@ -1,8 +1,6 @@ using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; -using System.Text; using System.Text.Json; using System.Text.Json.Serialization; diff --git a/CryptoExchange.Net/Converters/SystemTextJson/DateTimeConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/DateTimeConverter.cs index 09e7ed6..3d3d882 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/DateTimeConverter.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/DateTimeConverter.cs @@ -1,6 +1,5 @@ using Microsoft.Extensions.Logging; using System; -using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Text.Json; diff --git a/CryptoExchange.Net/Converters/SystemTextJson/DecimalConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/DecimalConverter.cs index 5d7b694..66c1ddf 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/DecimalConverter.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/DecimalConverter.cs @@ -1,5 +1,4 @@ using System; -using System.Globalization; using System.Text.Json; using System.Text.Json.Serialization; diff --git a/CryptoExchange.Net/Converters/SystemTextJson/EnumConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/EnumConverter.cs index 4f1ab08..b4b02bd 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/EnumConverter.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/EnumConverter.cs @@ -1,10 +1,8 @@ using CryptoExchange.Net.Attributes; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Logging.Abstractions; using System; using System.Collections.Concurrent; using System.Collections.Generic; -using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Reflection; diff --git a/CryptoExchange.Net/Converters/SystemTextJson/EnumIntWriterConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/EnumIntWriterConverter.cs index 9a0c9a7..a5d9b79 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/EnumIntWriterConverter.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/EnumIntWriterConverter.cs @@ -1,5 +1,4 @@ using System; -using System.Globalization; using System.Text.Json; using System.Text.Json.Serialization; diff --git a/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonRestMessageHandler.cs b/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonRestMessageHandler.cs index 2851b3f..8f36280 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonRestMessageHandler.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonRestMessageHandler.cs @@ -1,22 +1,16 @@ using CryptoExchange.Net.Converters.MessageParsing.DynamicConverters; -using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Errors; -using CryptoExchange.Net.Objects.Options; -using CryptoExchange.Net.Requests; using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; -using System.Net.Http; using System.Net.Http.Headers; -using System.Text; using System.Text.Json; using System.Threading; using System.Threading.Tasks; -namespace CryptoExchange.Net.Converters.SystemTextJson.MessageConverters +namespace CryptoExchange.Net.Converters.SystemTextJson.MessageHandlers { /// /// JSON REST message handler diff --git a/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketMessageHandler.cs b/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketMessageHandler.cs index e3d3719..80a7f77 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketMessageHandler.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketMessageHandler.cs @@ -7,7 +7,7 @@ using System.Net.WebSockets; using System.Text; using System.Text.Json; -namespace CryptoExchange.Net.Converters.SystemTextJson +namespace CryptoExchange.Net.Converters.SystemTextJson.MessageHandlers { /// /// JSON WebSocket message handler, sequentially read the JSON and looks for specific predefined fields to identify the message @@ -87,7 +87,7 @@ namespace CryptoExchange.Net.Converters.SystemTextJson x.Field is ArrayFieldReference arrayFieldRef && arrayFieldRef.ArrayIndex == arrayField.ArrayIndex && arrayFieldRef.Depth == arrayField.Depth - && (arrayFieldRef.Constraint == null && arrayField.Constraint == null)).ToList(); + && arrayFieldRef.Constraint == null && arrayField.Constraint == null).ToList(); } else if (field is PropertyFieldReference propField) { @@ -95,7 +95,7 @@ namespace CryptoExchange.Net.Converters.SystemTextJson x.Field is PropertyFieldReference propFieldRef && propFieldRef.PropertyName.SequenceEqual(propField.PropertyName) && propFieldRef.Depth == propField.Depth - && (propFieldRef.Constraint == null && propFieldRef.Constraint == null)).ToList(); + && propFieldRef.Constraint == null && propFieldRef.Constraint == null).ToList(); } foreach(var sameSearchField in existingSameSearchField) @@ -118,7 +118,7 @@ namespace CryptoExchange.Net.Converters.SystemTextJson _searchFields.Add(new MessageEvalutorFieldReference(field) { SkipReading = evaluator.TypeIdentifierCallback == null && field.Constraint == null, - ForceEvaluator = !existingSameSearchField.Any() ? (evaluator.ForceIfFound ? evaluator : null) : null, + ForceEvaluator = !existingSameSearchField.Any() ? evaluator.ForceIfFound ? evaluator : null : null, OverlappingField = overlapping.Any() }); @@ -243,10 +243,8 @@ namespace CryptoExchange.Net.Converters.SystemTextJson if (readArrayValues) { if (reader.TokenType != JsonTokenType.StartArray) - { // error return null; - } var sb = new StringBuilder(); reader.Read();// Read start array diff --git a/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketPreloadMessageHandler.cs b/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketPreloadMessageHandler.cs index f623f32..22ae049 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketPreloadMessageHandler.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketPreloadMessageHandler.cs @@ -3,7 +3,7 @@ using System; using System.Net.WebSockets; using System.Text.Json; -namespace CryptoExchange.Net.Converters.SystemTextJson +namespace CryptoExchange.Net.Converters.SystemTextJson.MessageHandlers { /// /// JSON WebSocket message handler, reads the json data info a JsonDocument after which the data can be inspected to identify the message diff --git a/CryptoExchange.Net/Converters/SystemTextJson/NullableEnumConverterFactory.cs b/CryptoExchange.Net/Converters/SystemTextJson/NullableEnumConverterFactory.cs index 4cd7e68..7b63b8d 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/NullableEnumConverterFactory.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/NullableEnumConverterFactory.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; using System.Text.Json.Serialization.Metadata; using System.Text.Json; using System.Text.Json.Serialization; diff --git a/CryptoExchange.Net/Converters/SystemTextJson/SerializationModel.cs b/CryptoExchange.Net/Converters/SystemTextJson/SerializationModel.cs index 3c958ec..5a95cdc 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/SerializationModel.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/SerializationModel.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace CryptoExchange.Net.Converters.SystemTextJson { diff --git a/CryptoExchange.Net/Converters/SystemTextJson/SharedQuantityConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/SharedQuantityConverter.cs index bedfebe..6d838f9 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/SharedQuantityConverter.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/SharedQuantityConverter.cs @@ -1,7 +1,5 @@ using CryptoExchange.Net.SharedApis; using System; -using System.Collections.Generic; -using System.Text; using System.Text.Json; using System.Text.Json.Serialization; diff --git a/CryptoExchange.Net/Converters/SystemTextJson/SharedSymbolConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/SharedSymbolConverter.cs index 6622305..ac2238d 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/SharedSymbolConverter.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/SharedSymbolConverter.cs @@ -1,7 +1,5 @@ using CryptoExchange.Net.SharedApis; using System; -using System.Collections.Generic; -using System.Text; using System.Text.Json; using System.Text.Json.Serialization; diff --git a/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageAccessor.cs b/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageAccessor.cs index c464f23..25e5d8a 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageAccessor.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageAccessor.cs @@ -2,7 +2,6 @@ using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects; using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Text; diff --git a/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageSerializer.cs b/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageSerializer.cs index f3cf340..4a628d5 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageSerializer.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageSerializer.cs @@ -1,8 +1,6 @@ using CryptoExchange.Net.Interfaces; using System.Diagnostics.CodeAnalysis; using System.Text.Json; -using System.Text.Json.Serialization; -using System.Text.Json.Serialization.Metadata; namespace CryptoExchange.Net.Converters.SystemTextJson { diff --git a/CryptoExchange.Net/ExchangeHelpers.cs b/CryptoExchange.Net/ExchangeHelpers.cs index c531adc..5b6a7be 100644 --- a/CryptoExchange.Net/ExchangeHelpers.cs +++ b/CryptoExchange.Net/ExchangeHelpers.cs @@ -1,7 +1,6 @@ using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Sockets; using CryptoExchange.Net.SharedApis; -using CryptoExchange.Net.Sockets; using System; using System.Collections.Generic; using System.Globalization; diff --git a/CryptoExchange.Net/ExchangeSymbolCache.cs b/CryptoExchange.Net/ExchangeSymbolCache.cs index 765b1e1..2b237d4 100644 --- a/CryptoExchange.Net/ExchangeSymbolCache.cs +++ b/CryptoExchange.Net/ExchangeSymbolCache.cs @@ -3,7 +3,6 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; -using System.Text; namespace CryptoExchange.Net { diff --git a/CryptoExchange.Net/Interfaces/IBaseApiClient.cs b/CryptoExchange.Net/Interfaces/Clients/IBaseApiClient.cs similarity index 96% rename from CryptoExchange.Net/Interfaces/IBaseApiClient.cs rename to CryptoExchange.Net/Interfaces/Clients/IBaseApiClient.cs index 21867c8..d7469be 100644 --- a/CryptoExchange.Net/Interfaces/IBaseApiClient.cs +++ b/CryptoExchange.Net/Interfaces/Clients/IBaseApiClient.cs @@ -1,10 +1,9 @@ using CryptoExchange.Net.Authentication; -using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Options; using CryptoExchange.Net.SharedApis; using System; -namespace CryptoExchange.Net.Interfaces +namespace CryptoExchange.Net.Interfaces.Clients { /// /// Base api client diff --git a/CryptoExchange.Net/Interfaces/ICryptoRestClient.cs b/CryptoExchange.Net/Interfaces/Clients/ICryptoRestClient.cs similarity index 88% rename from CryptoExchange.Net/Interfaces/ICryptoRestClient.cs rename to CryptoExchange.Net/Interfaces/Clients/ICryptoRestClient.cs index c3966eb..249c8fc 100644 --- a/CryptoExchange.Net/Interfaces/ICryptoRestClient.cs +++ b/CryptoExchange.Net/Interfaces/Clients/ICryptoRestClient.cs @@ -1,6 +1,6 @@ using System; -namespace CryptoExchange.Net.Interfaces +namespace CryptoExchange.Net.Interfaces.Clients { /// /// Client for accessing REST API's for different exchanges diff --git a/CryptoExchange.Net/Interfaces/ICryptoSocketClient.cs b/CryptoExchange.Net/Interfaces/Clients/ICryptoSocketClient.cs similarity index 89% rename from CryptoExchange.Net/Interfaces/ICryptoSocketClient.cs rename to CryptoExchange.Net/Interfaces/Clients/ICryptoSocketClient.cs index 867448c..69cb54d 100644 --- a/CryptoExchange.Net/Interfaces/ICryptoSocketClient.cs +++ b/CryptoExchange.Net/Interfaces/Clients/ICryptoSocketClient.cs @@ -1,6 +1,6 @@ using System; -namespace CryptoExchange.Net.Interfaces +namespace CryptoExchange.Net.Interfaces.Clients { /// /// Client for accessing Websocket API's for different exchanges diff --git a/CryptoExchange.Net/Interfaces/IRestApiClient.cs b/CryptoExchange.Net/Interfaces/Clients/IRestApiClient.cs similarity index 89% rename from CryptoExchange.Net/Interfaces/IRestApiClient.cs rename to CryptoExchange.Net/Interfaces/Clients/IRestApiClient.cs index 9d96fbd..09b667d 100644 --- a/CryptoExchange.Net/Interfaces/IRestApiClient.cs +++ b/CryptoExchange.Net/Interfaces/Clients/IRestApiClient.cs @@ -1,4 +1,4 @@ -namespace CryptoExchange.Net.Interfaces +namespace CryptoExchange.Net.Interfaces.Clients { /// /// Base rest API client diff --git a/CryptoExchange.Net/Interfaces/IRestClient.cs b/CryptoExchange.Net/Interfaces/Clients/IRestClient.cs similarity index 92% rename from CryptoExchange.Net/Interfaces/IRestClient.cs rename to CryptoExchange.Net/Interfaces/Clients/IRestClient.cs index a2592a3..09d197f 100644 --- a/CryptoExchange.Net/Interfaces/IRestClient.cs +++ b/CryptoExchange.Net/Interfaces/Clients/IRestClient.cs @@ -1,7 +1,7 @@ using System; using CryptoExchange.Net.Objects.Options; -namespace CryptoExchange.Net.Interfaces +namespace CryptoExchange.Net.Interfaces.Clients { /// /// Base class for rest API implementations diff --git a/CryptoExchange.Net/Interfaces/ISocketApiClient.cs b/CryptoExchange.Net/Interfaces/Clients/ISocketApiClient.cs similarity index 88% rename from CryptoExchange.Net/Interfaces/ISocketApiClient.cs rename to CryptoExchange.Net/Interfaces/Clients/ISocketApiClient.cs index fdc49bd..47722cc 100644 --- a/CryptoExchange.Net/Interfaces/ISocketApiClient.cs +++ b/CryptoExchange.Net/Interfaces/Clients/ISocketApiClient.cs @@ -1,9 +1,11 @@ using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Options; using CryptoExchange.Net.Objects.Sockets; +using CryptoExchange.Net.Sockets.Default.Interfaces; +using CryptoExchange.Net.Sockets.HighPerf.Interfaces; using System.Threading.Tasks; -namespace CryptoExchange.Net.Interfaces +namespace CryptoExchange.Net.Interfaces.Clients { /// /// Socket API client @@ -27,6 +29,10 @@ namespace CryptoExchange.Net.Interfaces /// IWebsocketFactory SocketFactory { get; set; } /// + /// High performance websocket factory + /// + IHighPerfConnectionFactory? HighPerfConnectionFactory { get; set; } + /// /// Current client options /// SocketExchangeOptions ClientOptions { get; } diff --git a/CryptoExchange.Net/Interfaces/ISocketClient.cs b/CryptoExchange.Net/Interfaces/Clients/ISocketClient.cs similarity index 97% rename from CryptoExchange.Net/Interfaces/ISocketClient.cs rename to CryptoExchange.Net/Interfaces/Clients/ISocketClient.cs index 42337ec..ec7a9e3 100644 --- a/CryptoExchange.Net/Interfaces/ISocketClient.cs +++ b/CryptoExchange.Net/Interfaces/Clients/ISocketClient.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using CryptoExchange.Net.Objects.Options; using CryptoExchange.Net.Objects.Sockets; -namespace CryptoExchange.Net.Interfaces +namespace CryptoExchange.Net.Interfaces.Clients { /// /// Base class for socket API implementations diff --git a/CryptoExchange.Net/Interfaces/IMessageAccessor.cs b/CryptoExchange.Net/Interfaces/IMessageAccessor.cs index 1c3c28c..d0a3773 100644 --- a/CryptoExchange.Net/Interfaces/IMessageAccessor.cs +++ b/CryptoExchange.Net/Interfaces/IMessageAccessor.cs @@ -1,7 +1,6 @@ using CryptoExchange.Net.Converters.MessageParsing; using CryptoExchange.Net.Objects; using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Threading.Tasks; diff --git a/CryptoExchange.Net/Interfaces/IMessageSerializer.cs b/CryptoExchange.Net/Interfaces/IMessageSerializer.cs index 01009a8..be4730c 100644 --- a/CryptoExchange.Net/Interfaces/IMessageSerializer.cs +++ b/CryptoExchange.Net/Interfaces/IMessageSerializer.cs @@ -1,6 +1,4 @@ -using System.Diagnostics.CodeAnalysis; - -namespace CryptoExchange.Net.Interfaces +namespace CryptoExchange.Net.Interfaces { /// /// Serializer interface diff --git a/CryptoExchange.Net/Interfaces/IRequest.cs b/CryptoExchange.Net/Interfaces/IRequest.cs index 612bf3b..739593a 100644 --- a/CryptoExchange.Net/Interfaces/IRequest.cs +++ b/CryptoExchange.Net/Interfaces/IRequest.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; using System.Threading; diff --git a/CryptoExchange.Net/Interfaces/IResponse.cs b/CryptoExchange.Net/Interfaces/IResponse.cs index a0dce86..068cccf 100644 --- a/CryptoExchange.Net/Interfaces/IResponse.cs +++ b/CryptoExchange.Net/Interfaces/IResponse.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.IO; using System.Net; using System.Net.Http.Headers; diff --git a/CryptoExchange.Net/Interfaces/ISymbolOrderBook.cs b/CryptoExchange.Net/Interfaces/ISymbolOrderBook.cs index 21c2bb7..609373f 100644 --- a/CryptoExchange.Net/Interfaces/ISymbolOrderBook.cs +++ b/CryptoExchange.Net/Interfaces/ISymbolOrderBook.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using CryptoExchange.Net.Objects; diff --git a/CryptoExchange.Net/LibraryHelpers.cs b/CryptoExchange.Net/LibraryHelpers.cs index 9201ce4..1113620 100644 --- a/CryptoExchange.Net/LibraryHelpers.cs +++ b/CryptoExchange.Net/LibraryHelpers.cs @@ -2,11 +2,8 @@ using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; -using System.Linq; using System.Net; using System.Net.Http; -using System.Text; -using System.Threading.Tasks; namespace CryptoExchange.Net { @@ -71,7 +68,7 @@ namespace CryptoExchange.Net { var reservedLength = brokerId.Length + ClientOrderIdSeparator.Length; - if ((clientOrderId?.Length + reservedLength) > maxLength) + if (clientOrderId?.Length + reservedLength > maxLength) return clientOrderId!; if (!string.IsNullOrEmpty(clientOrderId)) @@ -157,43 +154,5 @@ namespace CryptoExchange.Net return httpHandler; #endif } - - /// - /// Waits for all of the ValueTasks to complete - /// - public static async ValueTask WhenAll(IReadOnlyList tasks) - { - if (tasks.Count == 0) - return; - - List? toAwait = null; - - int completedTasks = 0; - - for (int i = 0; i < tasks.Count; i++) - { - if (!tasks[i].IsCompletedSuccessfully) - { - toAwait ??= new(); - toAwait.Add(tasks[i].AsTask()); - } - else - { - completedTasks++; - } - } - - if (completedTasks != tasks.Count) - await Task.WhenAll(toAwait!).ConfigureAwait(false); - } - - /// - /// Waits for all of the ValueTasks to complete - /// - public static ValueTask WhenAll(IEnumerable tasks) - { - return WhenAll(tasks.ToList()); - } - } } diff --git a/CryptoExchange.Net/Logging/Extensions/SocketConnectionLoggingExtension.cs b/CryptoExchange.Net/Logging/Extensions/SocketConnectionLoggingExtension.cs index 0997933..3487ce9 100644 --- a/CryptoExchange.Net/Logging/Extensions/SocketConnectionLoggingExtension.cs +++ b/CryptoExchange.Net/Logging/Extensions/SocketConnectionLoggingExtension.cs @@ -1,6 +1,6 @@ using System; using System.Net.WebSockets; -using CryptoExchange.Net.Sockets; +using CryptoExchange.Net.Sockets.Default; using Microsoft.Extensions.Logging; namespace CryptoExchange.Net.Logging.Extensions diff --git a/CryptoExchange.Net/Objects/AssetAlias.cs b/CryptoExchange.Net/Objects/AssetAlias.cs index 5ef6bc7..062c314 100644 --- a/CryptoExchange.Net/Objects/AssetAlias.cs +++ b/CryptoExchange.Net/Objects/AssetAlias.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.Objects +namespace CryptoExchange.Net.Objects { /// /// An alias used by the exchange for an asset commonly known by another name diff --git a/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs b/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs index a50462b..1bda64f 100644 --- a/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs +++ b/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs @@ -1,7 +1,5 @@ using System; -using System.Collections.Generic; using System.Linq; -using System.Text; namespace CryptoExchange.Net.Objects { diff --git a/CryptoExchange.Net/Objects/CallResult.cs b/CryptoExchange.Net/Objects/CallResult.cs index 8b48d71..74f79ac 100644 --- a/CryptoExchange.Net/Objects/CallResult.cs +++ b/CryptoExchange.Net/Objects/CallResult.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.SharedApis; using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Net; using System.Net.Http; diff --git a/CryptoExchange.Net/Objects/Enums.cs b/CryptoExchange.Net/Objects/Enums.cs index 0d4b18c..00a392d 100644 --- a/CryptoExchange.Net/Objects/Enums.cs +++ b/CryptoExchange.Net/Objects/Enums.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Attributes; - -namespace CryptoExchange.Net.Objects +namespace CryptoExchange.Net.Objects { /// /// What to do when a request would exceed the rate limit diff --git a/CryptoExchange.Net/Objects/Error.cs b/CryptoExchange.Net/Objects/Error.cs index 99bcaa5..ea72909 100644 --- a/CryptoExchange.Net/Objects/Error.cs +++ b/CryptoExchange.Net/Objects/Error.cs @@ -79,7 +79,20 @@ namespace CryptoExchange.Net.Objects /// public override string ToString() { - return ErrorCode != null ? $"[{GetType().Name}.{ErrorType}] {ErrorCode}: {Message ?? ErrorDescription}" : $"[{GetType().Name}.{ErrorType}] {Message ?? ErrorDescription}"; + return Code != null + ? $"[{GetType().Name}.{ErrorType}] {Code}: {GetErrorDescription()}" + : $"[{GetType().Name}.{ErrorType}] {GetErrorDescription()}"; + } + + private string GetErrorDescription() + { + if (!string.IsNullOrEmpty(Message)) + return Message!; + + if (ErrorDescription != "Unknown error" || Exception == null) + return ErrorDescription!; + + return Exception.Message; } } diff --git a/CryptoExchange.Net/Objects/Errors/ErrorEvaluator.cs b/CryptoExchange.Net/Objects/Errors/ErrorEvaluator.cs index b245115..364163e 100644 --- a/CryptoExchange.Net/Objects/Errors/ErrorEvaluator.cs +++ b/CryptoExchange.Net/Objects/Errors/ErrorEvaluator.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace CryptoExchange.Net.Objects.Errors { diff --git a/CryptoExchange.Net/Objects/Errors/ErrorInfo.cs b/CryptoExchange.Net/Objects/Errors/ErrorInfo.cs index 0dd38c6..98a5440 100644 --- a/CryptoExchange.Net/Objects/Errors/ErrorInfo.cs +++ b/CryptoExchange.Net/Objects/Errors/ErrorInfo.cs @@ -1,6 +1,4 @@ -using System; - -namespace CryptoExchange.Net.Objects.Errors +namespace CryptoExchange.Net.Objects.Errors { /// /// Error info diff --git a/CryptoExchange.Net/Objects/Errors/ErrorMapping.cs b/CryptoExchange.Net/Objects/Errors/ErrorMapping.cs index 219b3c9..3a144a0 100644 --- a/CryptoExchange.Net/Objects/Errors/ErrorMapping.cs +++ b/CryptoExchange.Net/Objects/Errors/ErrorMapping.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; namespace CryptoExchange.Net.Objects.Errors { diff --git a/CryptoExchange.Net/Objects/Errors/ErrorType.cs b/CryptoExchange.Net/Objects/Errors/ErrorType.cs index 7af5017..4545773 100644 --- a/CryptoExchange.Net/Objects/Errors/ErrorType.cs +++ b/CryptoExchange.Net/Objects/Errors/ErrorType.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.Objects.Errors +namespace CryptoExchange.Net.Objects.Errors { /// /// Type of error diff --git a/CryptoExchange.Net/Objects/Options/RestExchangeOptions.cs b/CryptoExchange.Net/Objects/Options/RestExchangeOptions.cs index f685a3e..51477fc 100644 --- a/CryptoExchange.Net/Objects/Options/RestExchangeOptions.cs +++ b/CryptoExchange.Net/Objects/Options/RestExchangeOptions.cs @@ -1,7 +1,5 @@ using CryptoExchange.Net.Authentication; using System; -using System.Net; -using System.Net.Http; namespace CryptoExchange.Net.Objects.Options { diff --git a/CryptoExchange.Net/Objects/Options/UpdateOptions.cs b/CryptoExchange.Net/Objects/Options/UpdateOptions.cs index 9fc9ed0..3970caa 100644 --- a/CryptoExchange.Net/Objects/Options/UpdateOptions.cs +++ b/CryptoExchange.Net/Objects/Options/UpdateOptions.cs @@ -1,7 +1,5 @@ using CryptoExchange.Net.Authentication; using System; -using System.Collections.Generic; -using System.Text; namespace CryptoExchange.Net.Objects.Options { diff --git a/CryptoExchange.Net/Sockets/ProcessQueue.cs b/CryptoExchange.Net/Objects/ProcessQueue.cs similarity index 97% rename from CryptoExchange.Net/Sockets/ProcessQueue.cs rename to CryptoExchange.Net/Objects/ProcessQueue.cs index ab93b72..7fb3121 100644 --- a/CryptoExchange.Net/Sockets/ProcessQueue.cs +++ b/CryptoExchange.Net/Objects/ProcessQueue.cs @@ -1,11 +1,10 @@ -using CryptoExchange.Net.Objects; -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using System; using System.Threading; using System.Threading.Channels; using System.Threading.Tasks; -namespace CryptoExchange.Net.Sockets +namespace CryptoExchange.Net.Objects { /// diff --git a/CryptoExchange.Net/Objects/Sockets/HighPerfUpdateSubscription.cs b/CryptoExchange.Net/Objects/Sockets/HighPerfUpdateSubscription.cs index 8bf9b76..9cc21a9 100644 --- a/CryptoExchange.Net/Objects/Sockets/HighPerfUpdateSubscription.cs +++ b/CryptoExchange.Net/Objects/Sockets/HighPerfUpdateSubscription.cs @@ -1,4 +1,4 @@ -using CryptoExchange.Net.Sockets; +using CryptoExchange.Net.Sockets.HighPerf; using System; using System.Collections.Generic; using System.Linq; diff --git a/CryptoExchange.Net/Objects/Sockets/UpdateSubscription.cs b/CryptoExchange.Net/Objects/Sockets/UpdateSubscription.cs index b871663..f128c79 100644 --- a/CryptoExchange.Net/Objects/Sockets/UpdateSubscription.cs +++ b/CryptoExchange.Net/Objects/Sockets/UpdateSubscription.cs @@ -1,4 +1,4 @@ -using CryptoExchange.Net.Sockets; +using CryptoExchange.Net.Sockets.Default; using System; using System.Collections.Generic; using System.Linq; diff --git a/CryptoExchange.Net/Objects/Sockets/WebSocketParameters.cs b/CryptoExchange.Net/Objects/Sockets/WebSocketParameters.cs index 9953691..8057716 100644 --- a/CryptoExchange.Net/Objects/Sockets/WebSocketParameters.cs +++ b/CryptoExchange.Net/Objects/Sockets/WebSocketParameters.cs @@ -1,7 +1,6 @@ using CryptoExchange.Net.RateLimiting.Interfaces; using System; using System.Collections.Generic; -using System.IO.Pipelines; using System.Text; namespace CryptoExchange.Net.Objects.Sockets diff --git a/CryptoExchange.Net/OrderBook/ProcessBufferEntry.cs b/CryptoExchange.Net/OrderBook/ProcessBufferEntry.cs index 5a71974..98498f5 100644 --- a/CryptoExchange.Net/OrderBook/ProcessBufferEntry.cs +++ b/CryptoExchange.Net/OrderBook/ProcessBufferEntry.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Interfaces; using System; -using System.Collections.Generic; namespace CryptoExchange.Net.OrderBook { diff --git a/CryptoExchange.Net/OrderBook/ProcessQueueItem.cs b/CryptoExchange.Net/OrderBook/ProcessQueueItem.cs index f23110c..6d16d29 100644 --- a/CryptoExchange.Net/OrderBook/ProcessQueueItem.cs +++ b/CryptoExchange.Net/OrderBook/ProcessQueueItem.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Interfaces; using System; -using System.Collections.Generic; namespace CryptoExchange.Net.OrderBook { diff --git a/CryptoExchange.Net/RateLimiting/RateLimitUpdateEvent.cs b/CryptoExchange.Net/RateLimiting/RateLimitUpdateEvent.cs index 341b822..83ddc6a 100644 --- a/CryptoExchange.Net/RateLimiting/RateLimitUpdateEvent.cs +++ b/CryptoExchange.Net/RateLimiting/RateLimitUpdateEvent.cs @@ -1,5 +1,4 @@ -using CryptoExchange.Net.Objects; -using System; +using System; namespace CryptoExchange.Net.RateLimiting { diff --git a/CryptoExchange.Net/Requests/Request.cs b/CryptoExchange.Net/Requests/Request.cs index 31e2ba8..698db12 100644 --- a/CryptoExchange.Net/Requests/Request.cs +++ b/CryptoExchange.Net/Requests/Request.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; using System.Net.Http; using System.Net.Http.Headers; using System.Text; diff --git a/CryptoExchange.Net/Requests/RequestFactory.cs b/CryptoExchange.Net/Requests/RequestFactory.cs index 7523d18..b70064e 100644 --- a/CryptoExchange.Net/Requests/RequestFactory.cs +++ b/CryptoExchange.Net/Requests/RequestFactory.cs @@ -1,5 +1,4 @@ using System; -using System.Net; using System.Net.Http; using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects; diff --git a/CryptoExchange.Net/Requests/Response.cs b/CryptoExchange.Net/Requests/Response.cs index 593c6cf..84ce275 100644 --- a/CryptoExchange.Net/Requests/Response.cs +++ b/CryptoExchange.Net/Requests/Response.cs @@ -1,7 +1,5 @@ using System; -using System.Collections.Generic; using System.IO; -using System.Linq; using System.Net; using System.Net.Http; using System.Net.Http.Headers; diff --git a/CryptoExchange.Net/SharedApis/Enums/SharedAccountType.cs b/CryptoExchange.Net/SharedApis/Enums/SharedAccountType.cs index e3bb862..c7fb54b 100644 --- a/CryptoExchange.Net/SharedApis/Enums/SharedAccountType.cs +++ b/CryptoExchange.Net/SharedApis/Enums/SharedAccountType.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Account type diff --git a/CryptoExchange.Net/SharedApis/Enums/SharedTickerType.cs b/CryptoExchange.Net/SharedApis/Enums/SharedTickerType.cs index ccf6355..1525219 100644 --- a/CryptoExchange.Net/SharedApis/Enums/SharedTickerType.cs +++ b/CryptoExchange.Net/SharedApis/Enums/SharedTickerType.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Type of ticker diff --git a/CryptoExchange.Net/SharedApis/Enums/SharedTpSlSide.cs b/CryptoExchange.Net/SharedApis/Enums/SharedTpSlSide.cs index c8cd0ab..d5bae45 100644 --- a/CryptoExchange.Net/SharedApis/Enums/SharedTpSlSide.cs +++ b/CryptoExchange.Net/SharedApis/Enums/SharedTpSlSide.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Take Profit / Stop Loss side diff --git a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderDirection.cs b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderDirection.cs index 1aefff9..8bd7791 100644 --- a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderDirection.cs +++ b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderDirection.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// The order direction when order trigger parameters are reached diff --git a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderStatus.cs b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderStatus.cs index 60082a9..e38e051 100644 --- a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderStatus.cs +++ b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderStatus.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Trigger order status diff --git a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceDirection.cs b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceDirection.cs index be513d2..12e78f1 100644 --- a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceDirection.cs +++ b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceDirection.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Price direction for trigger order diff --git a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceType.cs b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceType.cs index 84a2a1c..1a12792 100644 --- a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceType.cs +++ b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceType.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Price direction for trigger order diff --git a/CryptoExchange.Net/SharedApis/Interfaces/ISharedClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/ISharedClient.cs index eca53e9..da7a1a4 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/ISharedClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/ISharedClient.cs @@ -1,5 +1,4 @@ -using CryptoExchange.Net.Objects; -using System; +using System; namespace CryptoExchange.Net.SharedApis { diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFundingRateRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFundingRateRestClient.cs index 0553db7..057cb36 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFundingRateRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFundingRateRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderClientIdRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderClientIdRestClient.cs index f937403..2f8e925 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderClientIdRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderClientIdRestClient.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using System.Threading; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderRestClient.cs index 42b2ef1..5c3af62 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesSymbolRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesSymbolRestClient.cs index 672ef51..81b27db 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesSymbolRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesSymbolRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTickerRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTickerRestClient.cs index f96b9b3..8343139 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTickerRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTickerRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTpSlRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTpSlRestClient.cs index adc9f94..9f62e8b 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTpSlRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTpSlRestClient.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using System.Threading; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTriggerOrderRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTriggerOrderRestClient.cs index 176f2ef..bdda1c8 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTriggerOrderRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTriggerOrderRestClient.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IIndexPriceKlineRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IIndexPriceKlineRestClient.cs index 103055d..4c2299f 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IIndexPriceKlineRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IIndexPriceKlineRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IMarkPriceKlineRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IMarkPriceKlineRestClient.cs index 69f2f5c..0b02528 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IMarkPriceKlineRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IMarkPriceKlineRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IPositionHistoryRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IPositionHistoryRestClient.cs index 8097fff..5905927 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IPositionHistoryRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IPositionHistoryRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IAssetsRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IAssetsRestClient.cs index a688386..bea8a31 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IAssetsRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IAssetsRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IBalanceRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IBalanceRestClient.cs index 8190fc4..adf3e6d 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IBalanceRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IBalanceRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IDepositRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IDepositRestClient.cs index 0229d4a..c50758e 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IDepositRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IDepositRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IFeeRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IFeeRestClient.cs index 3a012cb..9f73ff0 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IFeeRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IFeeRestClient.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using System.Threading; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IKlineRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IKlineRestClient.cs index 06cee87..a71ac1e 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IKlineRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IKlineRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IRecentTradeRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IRecentTradeRestClient.cs index 714b7d5..ea1aad8 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IRecentTradeRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IRecentTradeRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITradeHistoryRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITradeHistoryRestClient.cs index e14c64d..c20d9ce 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITradeHistoryRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITradeHistoryRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITransferRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITransferRestClient.cs index 23eabab..32e0f07 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITransferRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITransferRestClient.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IWithdrawalRestClient .cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IWithdrawalRestClient .cs index 3316888..c2f3600 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IWithdrawalRestClient .cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IWithdrawalRestClient .cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderClientIdRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderClientIdRestClient.cs index c77a76c..438eb44 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderClientIdRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderClientIdRestClient.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; using System.Threading; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderRestClient.cs index cb5e816..c4d1a32 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotSymbolRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotSymbolRestClient.cs index 520f07c..78cb0f4 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotSymbolRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotSymbolRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTickerRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTickerRestClient.cs index 5e9a8f3..68f18d6 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTickerRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTickerRestClient.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTriggerOrderRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTriggerOrderRestClient.cs index a3009c7..871019c 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTriggerOrderRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTriggerOrderRestClient.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IFuturesOrderSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IFuturesOrderSocketClient.cs index db22ab6..dfd4270 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IFuturesOrderSocketClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IFuturesOrderSocketClient.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Objects.Sockets; using System; -using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IPositionSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IPositionSocketClient.cs index 03cba56..ce99896 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IPositionSocketClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IPositionSocketClient.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Threading.Tasks; using System.Threading; using CryptoExchange.Net.Objects.Sockets; diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/IBalanceSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/IBalanceSocketClient.cs index 24c66a6..9f2611d 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/IBalanceSocketClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/IBalanceSocketClient.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Objects.Sockets; using System; -using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITickersSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITickersSocketClient.cs index 4d25ffb..d642c1d 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITickersSocketClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITickersSocketClient.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Objects.Sockets; using System; -using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITradeSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITradeSocketClient.cs index e6a8f21..78721ef 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITradeSocketClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITradeSocketClient.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Objects.Sockets; using System; -using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/IUserTradeSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/IUserTradeSocketClient.cs index 031e9f8..b6d2b9d 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/IUserTradeSocketClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/IUserTradeSocketClient.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Objects.Sockets; using System; -using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Spot/ISpotOrderSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Spot/ISpotOrderSocketClient.cs index 12d24b2..20a59d6 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Spot/ISpotOrderSocketClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Spot/ISpotOrderSocketClient.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Objects.Sockets; using System; -using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/CryptoExchange.Net/SharedApis/Models/ExchangeParameters.cs b/CryptoExchange.Net/SharedApis/Models/ExchangeParameters.cs index 968738f..8023bca 100644 --- a/CryptoExchange.Net/SharedApis/Models/ExchangeParameters.cs +++ b/CryptoExchange.Net/SharedApis/Models/ExchangeParameters.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Xml.Linq; namespace CryptoExchange.Net.SharedApis { diff --git a/CryptoExchange.Net/SharedApis/Models/ExchangeWebResult.cs b/CryptoExchange.Net/SharedApis/Models/ExchangeWebResult.cs index 0f469a5..7861d21 100644 --- a/CryptoExchange.Net/SharedApis/Models/ExchangeWebResult.cs +++ b/CryptoExchange.Net/SharedApis/Models/ExchangeWebResult.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Objects; using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Net; using System.Net.Http; diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/EndpointOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/EndpointOptions.cs index 8d4d552..58b8d1d 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/EndpointOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/EndpointOptions.cs @@ -1,7 +1,6 @@ using CryptoExchange.Net.Objects; using System; using System.Collections.Generic; -using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Text; diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetKlinesOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetKlinesOptions.cs index a5e496f..c171259 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetKlinesOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetKlinesOptions.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Objects; using System; -using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetOrderBookOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetOrderBookOptions.cs index a7ff8e9..074c6a0 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetOrderBookOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetOrderBookOptions.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Objects; using System; -using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickerOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickerOptions.cs index 564cd40..fee07ca 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickerOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickerOptions.cs @@ -1,8 +1,4 @@ -using CryptoExchange.Net.Objects; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using System.Text; namespace CryptoExchange.Net.SharedApis { diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickersOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickersOptions.cs index 1d988e6..84885a7 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickersOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickersOptions.cs @@ -1,8 +1,4 @@ -using CryptoExchange.Net.Objects; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using System.Text; namespace CryptoExchange.Net.SharedApis { diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PaginatedEndpointOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PaginatedEndpointOptions.cs index 10e98bb..ed0e496 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PaginatedEndpointOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PaginatedEndpointOptions.cs @@ -1,5 +1,4 @@ -using CryptoExchange.Net.Objects; -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesOrderOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesOrderOptions.cs index 8a7c9b1..4683cce 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesOrderOptions.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Objects; using System; -using System.Collections.Generic; using System.Linq; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesTriggerOrderOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesTriggerOrderOptions.cs index a6e43db..e68f671 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesTriggerOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesTriggerOrderOptions.cs @@ -1,7 +1,4 @@ using CryptoExchange.Net.Objects; -using System; -using System.Collections.Generic; -using System.Linq; namespace CryptoExchange.Net.SharedApis { diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotOrderOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotOrderOptions.cs index 7e3c2e3..de6a6f2 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotOrderOptions.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Objects; using System; -using System.Collections.Generic; using System.Linq; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotTriggerOrderOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotTriggerOrderOptions.cs index ce7fd30..b9323a0 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotTriggerOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotTriggerOrderOptions.cs @@ -1,7 +1,4 @@ using CryptoExchange.Net.Objects; -using System; -using System.Collections.Generic; -using System.Linq; namespace CryptoExchange.Net.SharedApis { diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeKlineOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeKlineOptions.cs index 826c964..ac6f58b 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeKlineOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeKlineOptions.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Objects; using System; -using System.Collections.Generic; using System.Linq; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeOrderBookOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeOrderBookOptions.cs index c2baed2..8c1abe7 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeOrderBookOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeOrderBookOptions.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Objects; using System; -using System.Collections.Generic; using System.Linq; namespace CryptoExchange.Net.SharedApis diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickerOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickerOptions.cs index a2ccfa8..de629fb 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickerOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickerOptions.cs @@ -1,9 +1,4 @@ -using CryptoExchange.Net.Objects; -using System; -using System.Collections.Generic; -using System.Linq; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Options for subscribing to ticker updates diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickersOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickersOptions.cs index e3f70d0..3852d9f 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickersOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickersOptions.cs @@ -1,9 +1,4 @@ -using CryptoExchange.Net.Objects; -using System; -using System.Collections.Generic; -using System.Linq; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Options for subscribing to ticker updates diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetAssetsRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetAssetsRequest.cs index 7ef35a0..e46f3ec 100644 --- a/CryptoExchange.Net/SharedApis/Models/Rest/GetAssetsRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetAssetsRequest.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to retrieve a list of supported assets diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetBalancesRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetBalancesRequest.cs index 50a4852..78595a9 100644 --- a/CryptoExchange.Net/SharedApis/Models/Rest/GetBalancesRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetBalancesRequest.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to retrieve balance info for the user diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetFeeRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetFeeRequest.cs index 429e258..adce155 100644 --- a/CryptoExchange.Net/SharedApis/Models/Rest/GetFeeRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetFeeRequest.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to retrieve trading fees diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetOpenOrdersRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetOpenOrdersRequest.cs index 9f35a10..f4062ee 100644 --- a/CryptoExchange.Net/SharedApis/Models/Rest/GetOpenOrdersRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetOpenOrdersRequest.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to retrieve the current open orders diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionHistoryRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionHistoryRequest.cs index cc2ec6e..7bbb209 100644 --- a/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionHistoryRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionHistoryRequest.cs @@ -1,5 +1,4 @@ -using CryptoExchange.Net.Objects; -using System; +using System; namespace CryptoExchange.Net.SharedApis { diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionModeRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionModeRequest.cs index 7ff9b11..6aaae50 100644 --- a/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionModeRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionModeRequest.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to retrieve the current position mode diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionsRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionsRequest.cs index bed5794..3f6e7c5 100644 --- a/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionsRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionsRequest.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to retrieve open positions diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetSymbolsRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetSymbolsRequest.cs index d90a10e..59fa978 100644 --- a/CryptoExchange.Net/SharedApis/Models/Rest/GetSymbolsRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetSymbolsRequest.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to retrieve symbol info diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetTickersRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetTickersRequest.cs index c3267f4..389e4e1 100644 --- a/CryptoExchange.Net/SharedApis/Models/Rest/GetTickersRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetTickersRequest.cs @@ -1,7 +1,4 @@ - -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to retrieve all symbol tickers diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/KeepAliveListenKeyRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/KeepAliveListenKeyRequest.cs index 410f257..459a97f 100644 --- a/CryptoExchange.Net/SharedApis/Models/Rest/KeepAliveListenKeyRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Rest/KeepAliveListenKeyRequest.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to keep-alive the update stream for the specified listen key diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/SetPositionModeRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/SetPositionModeRequest.cs index 0d65f0c..75b613c 100644 --- a/CryptoExchange.Net/SharedApis/Models/Rest/SetPositionModeRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Rest/SetPositionModeRequest.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to change the current position mode diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/StartListenKeyRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/StartListenKeyRequest.cs index b6dcb45..1f6c81b 100644 --- a/CryptoExchange.Net/SharedApis/Models/Rest/StartListenKeyRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Rest/StartListenKeyRequest.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to start the update stream for the current user diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/StopListenKeyRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/StopListenKeyRequest.cs index 4a59a8a..015cc13 100644 --- a/CryptoExchange.Net/SharedApis/Models/Rest/StopListenKeyRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Rest/StopListenKeyRequest.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to stop the update stream for the specific listen key diff --git a/CryptoExchange.Net/SharedApis/Models/SharedSymbolRequest.cs b/CryptoExchange.Net/SharedApis/Models/SharedSymbolRequest.cs index a50355c..c277887 100644 --- a/CryptoExchange.Net/SharedApis/Models/SharedSymbolRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/SharedSymbolRequest.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.Linq; diff --git a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeAllTickersRequest.cs b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeAllTickersRequest.cs index c2e38cb..8eca717 100644 --- a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeAllTickersRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeAllTickersRequest.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to subscribe to ticker updates for all symbols diff --git a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeBalancesRequest.cs b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeBalancesRequest.cs index 0179434..d9945fb 100644 --- a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeBalancesRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeBalancesRequest.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to subscribe to balance updates diff --git a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeFuturesOrderRequest.cs b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeFuturesOrderRequest.cs index a27ba51..716b9c9 100644 --- a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeFuturesOrderRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeFuturesOrderRequest.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to subscribe to futures order updates diff --git a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribePositionRequest.cs b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribePositionRequest.cs index 6ead352..b7c74a5 100644 --- a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribePositionRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribePositionRequest.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to subscribe to position updates diff --git a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeTickerRequest.cs b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeTickerRequest.cs index 46f3636..406bd6f 100644 --- a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeTickerRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeTickerRequest.cs @@ -1,5 +1,4 @@ -using System.Collections; -using System.Collections.Generic; +using System.Collections.Generic; namespace CryptoExchange.Net.SharedApis { diff --git a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeUserTradeRequest.cs b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeUserTradeRequest.cs index d4df63c..a851f34 100644 --- a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeUserTradeRequest.cs +++ b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeUserTradeRequest.cs @@ -1,6 +1,4 @@ -using CryptoExchange.Net.Objects; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Request to subscribe to user trade updates diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs index 7151653..00dd301 100644 --- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs +++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; namespace CryptoExchange.Net.SharedApis { diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFee.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFee.cs index 528ed6d..7f2e24d 100644 --- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFee.cs +++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFee.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Trading fee info diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesTriggerOrder.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesTriggerOrder.cs index 49fdbf8..734bf71 100644 --- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesTriggerOrder.cs +++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesTriggerOrder.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace CryptoExchange.Net.SharedApis { diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedOrderBook.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedOrderBook.cs index d4e85c9..7057c41 100644 --- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedOrderBook.cs +++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedOrderBook.cs @@ -1,5 +1,4 @@ using CryptoExchange.Net.Interfaces; -using System.Collections.Generic; namespace CryptoExchange.Net.SharedApis { diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotTriggerOrder.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotTriggerOrder.cs index fedade0..ee2a13f 100644 --- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotTriggerOrder.cs +++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotTriggerOrder.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace CryptoExchange.Net.SharedApis { diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedSymbolModel.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedSymbolModel.cs index d15849f..70cf848 100644 --- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedSymbolModel.cs +++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedSymbolModel.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.SharedApis +namespace CryptoExchange.Net.SharedApis { /// /// Symbol model diff --git a/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs b/CryptoExchange.Net/Sockets/Default/CryptoExchangeWebSocketClient.cs similarity index 98% rename from CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs rename to CryptoExchange.Net/Sockets/Default/CryptoExchangeWebSocketClient.cs index 6bff803..e6b15e0 100644 --- a/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs +++ b/CryptoExchange.Net/Sockets/Default/CryptoExchangeWebSocketClient.cs @@ -1,23 +1,21 @@ -using CryptoExchange.Net.Interfaces; -using CryptoExchange.Net.Logging.Extensions; +using CryptoExchange.Net.Logging.Extensions; using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Errors; using CryptoExchange.Net.Objects.Sockets; using CryptoExchange.Net.RateLimiting; +using CryptoExchange.Net.Sockets.Default.Interfaces; using Microsoft.Extensions.Logging; using System; using System.Buffers; using System.Collections.Concurrent; -using System.Collections.Generic; using System.IO; -using System.Linq; using System.Net; using System.Net.Http; using System.Net.WebSockets; using System.Threading; using System.Threading.Tasks; -namespace CryptoExchange.Net.Sockets +namespace CryptoExchange.Net.Sockets.Default { /// /// A wrapper around the ClientWebSocket @@ -227,9 +225,7 @@ namespace CryptoExchange.Net.Sockets catch (Exception e) { if (ct.IsCancellationRequested) - { _logger.SocketConnectingCanceled(Id); - } else if (!_ctsSource.IsCancellationRequested) { // if _ctsSource was canceled this was already logged @@ -246,9 +242,7 @@ namespace CryptoExchange.Net.Sockets } if (_socket.HttpStatusCode == HttpStatusCode.Unauthorized) - { return new CallResult(new ServerError(new ErrorInfo(ErrorType.Unauthorized, "Server returned status code `401` when `101` was expected"))); - } #else // ClientWebSocket.HttpStatusCode is only available in .NET6+ https://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.clientwebsocket.httpstatuscode?view=net-8.0 // Try to read 429 from the message instead @@ -456,9 +450,7 @@ namespace CryptoExchange.Net.Sockets try { if (_socket.State == WebSocketState.CloseReceived) - { await _socket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "Closing", default).ConfigureAwait(false); - } else if (_socket.State == WebSocketState.Open) { await _socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", default).ConfigureAwait(false); @@ -612,11 +604,9 @@ namespace CryptoExchange.Net.Sockets catch (OperationCanceledException ex) { if (ex.InnerException?.InnerException?.Message.Contains("KeepAliveTimeout") == true) - { // Specific case that the websocket connection got closed because of a ping frame timeout // Unfortunately doesn't seem to be a nicer way to catch _logger.SocketPingTimeout(Id); - } if (_closeTask?.IsCompleted != false) _closeTask = CloseInternalAsync(); @@ -695,16 +685,12 @@ namespace CryptoExchange.Net.Sockets UpdateReceivedMessages(); if (receiveResult?.MessageType == WebSocketMessageType.Close) - { // Received close message break; - } if (receiveResult == null || _ctsSource.IsCancellationRequested) - { // Error during receiving or cancellation requested, stop. break; - } if (multiPartMessage) { @@ -774,11 +760,9 @@ namespace CryptoExchange.Net.Sockets catch (OperationCanceledException ex) { if (ex.InnerException?.InnerException?.Message.Contains("KeepAliveTimeout") == true) - { // Specific case that the websocket connection got closed because of a ping frame timeout // Unfortunately doesn't seem to be a nicer way to catch _logger.SocketPingTimeout(Id); - } if (_closeTask?.IsCompleted != false) _closeTask = CloseInternalAsync(); @@ -852,16 +836,12 @@ namespace CryptoExchange.Net.Sockets UpdateReceivedMessages(); if (receiveResult.MessageType == WebSocketMessageType.Close) - { // Received close message break; - } if (_ctsSource.IsCancellationRequested) - { // Error during receiving or cancellation requested, stop. break; - } if (multiPartMessage) { diff --git a/CryptoExchange.Net/Interfaces/IWebsocket.cs b/CryptoExchange.Net/Sockets/Default/Interfaces/IWebsocket.cs similarity index 98% rename from CryptoExchange.Net/Interfaces/IWebsocket.cs rename to CryptoExchange.Net/Sockets/Default/Interfaces/IWebsocket.cs index bc360d0..3aa4f13 100644 --- a/CryptoExchange.Net/Interfaces/IWebsocket.cs +++ b/CryptoExchange.Net/Sockets/Default/Interfaces/IWebsocket.cs @@ -4,7 +4,7 @@ using System.Net.WebSockets; using System.Threading; using System.Threading.Tasks; -namespace CryptoExchange.Net.Interfaces +namespace CryptoExchange.Net.Sockets.Default.Interfaces { /// /// Websocket connection interface diff --git a/CryptoExchange.Net/Interfaces/IWebsocketFactory.cs b/CryptoExchange.Net/Sockets/Default/Interfaces/IWebsocketFactory.cs similarity index 89% rename from CryptoExchange.Net/Interfaces/IWebsocketFactory.cs rename to CryptoExchange.Net/Sockets/Default/Interfaces/IWebsocketFactory.cs index 6b2487e..e0b76ae 100644 --- a/CryptoExchange.Net/Interfaces/IWebsocketFactory.cs +++ b/CryptoExchange.Net/Sockets/Default/Interfaces/IWebsocketFactory.cs @@ -1,9 +1,9 @@ using CryptoExchange.Net.Objects.Sockets; -using CryptoExchange.Net.Sockets; +using CryptoExchange.Net.Sockets.HighPerf.Interfaces; using Microsoft.Extensions.Logging; using System.IO.Pipelines; -namespace CryptoExchange.Net.Interfaces +namespace CryptoExchange.Net.Sockets.Default.Interfaces { /// /// Websocket factory interface diff --git a/CryptoExchange.Net/Sockets/SocketConnection.cs b/CryptoExchange.Net/Sockets/Default/SocketConnection.cs similarity index 98% rename from CryptoExchange.Net/Sockets/SocketConnection.cs rename to CryptoExchange.Net/Sockets/Default/SocketConnection.cs index 88ec24b..f4903df 100644 --- a/CryptoExchange.Net/Sockets/SocketConnection.cs +++ b/CryptoExchange.Net/Sockets/Default/SocketConnection.cs @@ -4,6 +4,8 @@ using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Logging.Extensions; using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Sockets; +using CryptoExchange.Net.Sockets.Default.Interfaces; +using CryptoExchange.Net.Sockets.Interfaces; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; @@ -14,7 +16,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; -namespace CryptoExchange.Net.Sockets +namespace CryptoExchange.Net.Sockets.Default { /// /// State of a the connection @@ -339,8 +341,8 @@ namespace CryptoExchange.Net.Sockets Status = SocketStatus.Closed; Authenticated = false; - if (ApiClient.socketConnections.ContainsKey(SocketId)) - ApiClient.socketConnections.TryRemove(SocketId, out _); + if (ApiClient._socketConnections.ContainsKey(SocketId)) + ApiClient._socketConnections.TryRemove(SocketId, out _); lock (_listenersLock) { @@ -812,8 +814,8 @@ namespace CryptoExchange.Net.Sockets if (Status == SocketStatus.Closed || Status == SocketStatus.Disposed) return; - if (ApiClient.socketConnections.ContainsKey(SocketId)) - ApiClient.socketConnections.TryRemove(SocketId, out _); + if (ApiClient._socketConnections.ContainsKey(SocketId)) + ApiClient._socketConnections.TryRemove(SocketId, out _); lock (_listenersLock) { @@ -1037,9 +1039,7 @@ namespace CryptoExchange.Net.Sockets public virtual ValueTask SendAsync(int requestId, T obj, int weight) { if (_serializer is IByteMessageSerializer byteSerializer) - { return SendBytesAsync(requestId, byteSerializer.Serialize(obj), weight); - } else if (_serializer is IStringMessageSerializer stringSerializer) { if (obj is string str) @@ -1145,7 +1145,7 @@ namespace CryptoExchange.Net.Sockets lock (_listenersLock) { anyAuthenticated = _listeners.OfType().Any(s => s.Authenticated) - || (DedicatedRequestConnection.IsDedicatedRequestConnection && DedicatedRequestConnection.Authenticated); + || DedicatedRequestConnection.IsDedicatedRequestConnection && DedicatedRequestConnection.Authenticated; } if (anyAuthenticated) diff --git a/CryptoExchange.Net/Sockets/Subscription.cs b/CryptoExchange.Net/Sockets/Default/Subscription.cs similarity index 98% rename from CryptoExchange.Net/Sockets/Subscription.cs rename to CryptoExchange.Net/Sockets/Default/Subscription.cs index eadd95a..d52284a 100644 --- a/CryptoExchange.Net/Sockets/Subscription.cs +++ b/CryptoExchange.Net/Sockets/Default/Subscription.cs @@ -1,14 +1,12 @@ using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects; -using CryptoExchange.Net.Objects.Sockets; +using CryptoExchange.Net.Sockets.Interfaces; using Microsoft.Extensions.Logging; using System; -using System.Collections.Generic; -using System.Linq; using System.Threading; using System.Threading.Tasks; -namespace CryptoExchange.Net.Sockets +namespace CryptoExchange.Net.Sockets.Default { /// /// Socket subscription diff --git a/CryptoExchange.Net/Sockets/SystemSubscription.cs b/CryptoExchange.Net/Sockets/Default/SystemSubscription.cs similarity index 81% rename from CryptoExchange.Net/Sockets/SystemSubscription.cs rename to CryptoExchange.Net/Sockets/Default/SystemSubscription.cs index bef4ec0..0d610aa 100644 --- a/CryptoExchange.Net/Sockets/SystemSubscription.cs +++ b/CryptoExchange.Net/Sockets/Default/SystemSubscription.cs @@ -1,10 +1,7 @@ -using CryptoExchange.Net.Interfaces; -using CryptoExchange.Net.Objects; -using CryptoExchange.Net.Objects.Sockets; +using CryptoExchange.Net.Objects; using Microsoft.Extensions.Logging; -using System; -namespace CryptoExchange.Net.Sockets +namespace CryptoExchange.Net.Sockets.Default { /// /// A system subscription diff --git a/CryptoExchange.Net/Sockets/WebsocketFactory.cs b/CryptoExchange.Net/Sockets/Default/WebsocketFactory.cs similarity index 75% rename from CryptoExchange.Net/Sockets/WebsocketFactory.cs rename to CryptoExchange.Net/Sockets/Default/WebsocketFactory.cs index 81602f3..a046c00 100644 --- a/CryptoExchange.Net/Sockets/WebsocketFactory.cs +++ b/CryptoExchange.Net/Sockets/Default/WebsocketFactory.cs @@ -1,11 +1,11 @@ -using CryptoExchange.Net.Interfaces; -using CryptoExchange.Net.Objects.Sockets; +using CryptoExchange.Net.Objects.Sockets; +using CryptoExchange.Net.Sockets.Default.Interfaces; +using CryptoExchange.Net.Sockets.HighPerf; +using CryptoExchange.Net.Sockets.HighPerf.Interfaces; using Microsoft.Extensions.Logging; -using System; using System.IO.Pipelines; -using System.Threading.Tasks; -namespace CryptoExchange.Net.Sockets +namespace CryptoExchange.Net.Sockets.Default { /// /// Default websocket factory implementation diff --git a/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnection.cs b/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnection.cs index c978536..7a2a495 100644 --- a/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnection.cs +++ b/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnection.cs @@ -1,9 +1,8 @@ using CryptoExchange.Net.Clients; -using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects.Sockets; +using CryptoExchange.Net.Sockets.Default.Interfaces; using Microsoft.Extensions.Logging; using System; -using System.Linq; using System.Text.Json; using System.Threading; using System.Threading.Tasks; @@ -44,15 +43,8 @@ namespace CryptoExchange.Net.Sockets.HighPerf #pragma warning restore IL3050 // Calling members annotated with 'RequiresDynamicCodeAttribute' may break functionality when AOT compiling. #pragma warning restore IL2026 // Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code { - if (_typedSubscriptions.Count == 1) - { - // If there is only one listener we can prevent the overhead of the await which will call a `ToList` - await DelegateToSubscription(_typedSubscriptions[0], update!).ConfigureAwait(false); - continue; - } - - var tasks = _typedSubscriptions.Select(sub => DelegateToSubscription(sub, update!)); - await LibraryHelpers.WhenAll(tasks).ConfigureAwait(false); + foreach(var sub in _typedSubscriptions) + DelegateToSubscription(_typedSubscriptions[0], update!); } } catch (OperationCanceledException) { } diff --git a/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnectionFactory.cs b/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnectionFactory.cs index 2aa4f27..df53e5c 100644 --- a/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnectionFactory.cs +++ b/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnectionFactory.cs @@ -1,6 +1,7 @@ using CryptoExchange.Net.Clients; -using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects.Sockets; +using CryptoExchange.Net.Sockets.Default.Interfaces; +using CryptoExchange.Net.Sockets.HighPerf.Interfaces; using Microsoft.Extensions.Logging; using System.Text.Json; diff --git a/CryptoExchange.Net/Sockets/HighPerf/HighPerfPeriodicTaskRegistration.cs b/CryptoExchange.Net/Sockets/HighPerf/HighPerfPeriodicTaskRegistration.cs deleted file mode 100644 index b6618a0..0000000 --- a/CryptoExchange.Net/Sockets/HighPerf/HighPerfPeriodicTaskRegistration.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; - -namespace CryptoExchange.Net.Sockets.HighPerf -{ - /// - /// Periodic task registration - /// - public class HighPerfPeriodicTaskRegistration - { - /// - /// Identifier - /// - public string Identifier { get; set; } = string.Empty; - /// - /// Interval of query - /// - public TimeSpan Interval { get; set; } - /// - /// Delegate for getting the request which should be send - /// - public Func GetRequestDelegate { get; set; } = null!; - } -} diff --git a/CryptoExchange.Net/Sockets/HighPerf/HighPerfSocketConnection.cs b/CryptoExchange.Net/Sockets/HighPerf/HighPerfSocketConnection.cs index bda4ecd..1646d2e 100644 --- a/CryptoExchange.Net/Sockets/HighPerf/HighPerfSocketConnection.cs +++ b/CryptoExchange.Net/Sockets/HighPerf/HighPerfSocketConnection.cs @@ -11,8 +11,12 @@ using CryptoExchange.Net.Clients; using CryptoExchange.Net.Logging.Extensions; using System.Threading; using System.IO.Pipelines; +using CryptoExchange.Net.Sockets.Interfaces; +using CryptoExchange.Net.Sockets.Default; +using CryptoExchange.Net.Sockets.HighPerf.Interfaces; +using CryptoExchange.Net.Sockets.Default.Interfaces; -namespace CryptoExchange.Net.Sockets +namespace CryptoExchange.Net.Sockets.HighPerf { /// /// A single socket connection focused on performance @@ -165,8 +169,8 @@ namespace CryptoExchange.Net.Sockets Status = SocketStatus.Closed; _cts.CancelAfter(TimeSpan.FromSeconds(1)); // Cancel after 1 second to make sure we process pending messages from the pipe - if (ApiClient.highPerfSocketConnections.ContainsKey(SocketId)) - ApiClient.highPerfSocketConnections.TryRemove(SocketId, out _); + if (ApiClient._highPerfSocketConnections.ContainsKey(SocketId)) + ApiClient._highPerfSocketConnections.TryRemove(SocketId, out _); await _processTask!.ConfigureAwait(false); @@ -209,8 +213,8 @@ namespace CryptoExchange.Net.Sockets if (Status == SocketStatus.Closed || Status == SocketStatus.Disposed) return; - if (ApiClient.socketConnections.ContainsKey(SocketId)) - ApiClient.socketConnections.TryRemove(SocketId, out _); + if (ApiClient._socketConnections.ContainsKey(SocketId)) + ApiClient._socketConnections.TryRemove(SocketId, out _); foreach (var subscription in Subscriptions) { @@ -275,9 +279,7 @@ namespace CryptoExchange.Net.Sockets public virtual ValueTask SendAsync(T obj) { if (_serializer is IByteMessageSerializer byteSerializer) - { return SendBytesAsync(byteSerializer.Serialize(obj)); - } else if (_serializer is IStringMessageSerializer stringSerializer) { if (obj is string str) @@ -480,17 +482,16 @@ namespace CryptoExchange.Net.Sockets /// /// Delegate the update to the listeners /// - protected ValueTask DelegateToSubscription(HighPerfSubscription subscription, T update) + protected void DelegateToSubscription(HighPerfSubscription subscription, T update) { try { - return subscription.HandleAsync(update!); + subscription.HandleAsync(update!); } catch (Exception ex) { subscription.InvokeExceptionHandler(ex); _logger.UserMessageProcessingFailed(SocketId, ex.Message, ex); - return new ValueTask(); } } } diff --git a/CryptoExchange.Net/Sockets/HighPerf/HighPerfSubscription.cs b/CryptoExchange.Net/Sockets/HighPerf/HighPerfSubscription.cs index 895887d..2630213 100644 --- a/CryptoExchange.Net/Sockets/HighPerf/HighPerfSubscription.cs +++ b/CryptoExchange.Net/Sockets/HighPerf/HighPerfSubscription.cs @@ -1,8 +1,7 @@ using System; using System.Threading; -using System.Threading.Tasks; -namespace CryptoExchange.Net.Sockets +namespace CryptoExchange.Net.Sockets.HighPerf { /// /// Socket subscription @@ -92,12 +91,12 @@ namespace CryptoExchange.Net.Sockets /// public abstract class HighPerfSubscription : HighPerfSubscription { - private Func _handler; + private Action _handler; /// /// ctor /// - protected HighPerfSubscription(Func handler) : base() + protected HighPerfSubscription(Action handler) : base() { _handler = handler; } @@ -105,10 +104,10 @@ namespace CryptoExchange.Net.Sockets /// /// Handle an update /// - public ValueTask HandleAsync(TUpdateType update) + public void HandleAsync(TUpdateType update) { TotalInvocations++; - return _handler.Invoke(update); + _handler.Invoke(update); } } } diff --git a/CryptoExchange.Net/Sockets/HighPerf/HighPerfWebSocketClient.cs b/CryptoExchange.Net/Sockets/HighPerf/HighPerfWebSocketClient.cs index 5731000..9dae8e9 100644 --- a/CryptoExchange.Net/Sockets/HighPerf/HighPerfWebSocketClient.cs +++ b/CryptoExchange.Net/Sockets/HighPerf/HighPerfWebSocketClient.cs @@ -1,19 +1,18 @@ -using CryptoExchange.Net.Interfaces; -using CryptoExchange.Net.Logging.Extensions; +using CryptoExchange.Net.Logging.Extensions; using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Errors; using CryptoExchange.Net.Objects.Sockets; +using CryptoExchange.Net.Sockets.HighPerf.Interfaces; using Microsoft.Extensions.Logging; using System; using System.Buffers; using System.IO.Pipelines; using System.Net; using System.Net.WebSockets; -using System.Text; using System.Threading; using System.Threading.Tasks; -namespace CryptoExchange.Net.Sockets +namespace CryptoExchange.Net.Sockets.HighPerf { /// /// A high performance websocket client implementation @@ -146,9 +145,7 @@ namespace CryptoExchange.Net.Sockets catch (Exception e) { if (ct.IsCancellationRequested) - { _logger.SocketConnectingCanceled(Id); - } else if (!_ctsSource.IsCancellationRequested) { // if _ctsSource was canceled this was already logged @@ -159,21 +156,15 @@ namespace CryptoExchange.Net.Sockets { #if (NET6_0_OR_GREATER) if (_socket!.HttpStatusCode == HttpStatusCode.TooManyRequests) - { return new CallResult(new ServerRateLimitError(we.Message, we)); - } if (_socket.HttpStatusCode == HttpStatusCode.Unauthorized) - { return new CallResult(new ServerError(new ErrorInfo(ErrorType.Unauthorized, "Server returned status code `401` when `101` was expected"))); - } #else // ClientWebSocket.HttpStatusCode is only available in .NET6+ https://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.clientwebsocket.httpstatuscode?view=net-8.0 // Try to read 429 from the message instead if (we.Message.Contains("429")) - { return new CallResult(new ServerRateLimitError(we.Message, we)); - } #endif } @@ -280,9 +271,7 @@ namespace CryptoExchange.Net.Sockets try { if (_socket!.State == WebSocketState.CloseReceived) - { await _socket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "Closing", default).ConfigureAwait(false); - } else if (_socket.State == WebSocketState.Open) { await _socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", default).ConfigureAwait(false); @@ -350,11 +339,9 @@ namespace CryptoExchange.Net.Sockets catch (OperationCanceledException ex) { if (ex.InnerException?.InnerException?.Message.Contains("KeepAliveTimeout") == true) - { // Specific case that the websocket connection got closed because of a ping frame timeout // Unfortunately doesn't seem to be a nicer way to catch _logger.SocketPingTimeout(Id); - } if (_closeTask?.IsCompleted != false) _closeTask = CloseInternalAsync(); @@ -450,11 +437,9 @@ namespace CryptoExchange.Net.Sockets catch (OperationCanceledException ex) { if (ex.InnerException?.InnerException?.Message.Contains("KeepAliveTimeout") == true) - { // Specific case that the websocket connection got closed because of a ping frame timeout // Unfortunately doesn't seem to be a nicer way to catch _logger.SocketPingTimeout(Id); - } if (_closeTask?.IsCompleted != false) _closeTask = CloseInternalAsync(); diff --git a/CryptoExchange.Net/Sockets/HighPerf/IHighPerfConnectionFactory.cs b/CryptoExchange.Net/Sockets/HighPerf/Interfaces/IHighPerfConnectionFactory.cs similarity index 83% rename from CryptoExchange.Net/Sockets/HighPerf/IHighPerfConnectionFactory.cs rename to CryptoExchange.Net/Sockets/HighPerf/Interfaces/IHighPerfConnectionFactory.cs index 1ba68d0..406328c 100644 --- a/CryptoExchange.Net/Sockets/HighPerf/IHighPerfConnectionFactory.cs +++ b/CryptoExchange.Net/Sockets/HighPerf/Interfaces/IHighPerfConnectionFactory.cs @@ -1,9 +1,9 @@ using CryptoExchange.Net.Clients; -using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects.Sockets; +using CryptoExchange.Net.Sockets.Default.Interfaces; using Microsoft.Extensions.Logging; -namespace CryptoExchange.Net.Sockets.HighPerf +namespace CryptoExchange.Net.Sockets.HighPerf.Interfaces { /// /// Factory for creating connections diff --git a/CryptoExchange.Net/Interfaces/IHighPerfWebsocket.cs b/CryptoExchange.Net/Sockets/HighPerf/Interfaces/IHighPerfWebsocket.cs similarity index 96% rename from CryptoExchange.Net/Interfaces/IHighPerfWebsocket.cs rename to CryptoExchange.Net/Sockets/HighPerf/Interfaces/IHighPerfWebsocket.cs index 5f15f8f..cd81fce 100644 --- a/CryptoExchange.Net/Interfaces/IHighPerfWebsocket.cs +++ b/CryptoExchange.Net/Sockets/HighPerf/Interfaces/IHighPerfWebsocket.cs @@ -4,7 +4,7 @@ using System.Net.WebSockets; using System.Threading; using System.Threading.Tasks; -namespace CryptoExchange.Net.Interfaces +namespace CryptoExchange.Net.Sockets.HighPerf.Interfaces { /// /// Websocket connection interface diff --git a/CryptoExchange.Net/Interfaces/IMessageProcessor.cs b/CryptoExchange.Net/Sockets/Interfaces/IMessageProcessor.cs similarity index 85% rename from CryptoExchange.Net/Interfaces/IMessageProcessor.cs rename to CryptoExchange.Net/Sockets/Interfaces/IMessageProcessor.cs index f225a2c..79dea44 100644 --- a/CryptoExchange.Net/Interfaces/IMessageProcessor.cs +++ b/CryptoExchange.Net/Sockets/Interfaces/IMessageProcessor.cs @@ -1,11 +1,9 @@ -using CryptoExchange.Net.Objects; -using CryptoExchange.Net.Objects.Sockets; -using CryptoExchange.Net.Sockets; +using CryptoExchange.Net.Interfaces; +using CryptoExchange.Net.Objects; +using CryptoExchange.Net.Sockets.Default; using System; -using System.Collections.Generic; -using System.Threading.Tasks; -namespace CryptoExchange.Net.Interfaces +namespace CryptoExchange.Net.Sockets.Interfaces { /// /// Message processor diff --git a/CryptoExchange.Net/Sockets/ISocketConnection.cs b/CryptoExchange.Net/Sockets/Interfaces/ISocketConnection.cs similarity index 97% rename from CryptoExchange.Net/Sockets/ISocketConnection.cs rename to CryptoExchange.Net/Sockets/Interfaces/ISocketConnection.cs index 7768b64..4291be9 100644 --- a/CryptoExchange.Net/Sockets/ISocketConnection.cs +++ b/CryptoExchange.Net/Sockets/Interfaces/ISocketConnection.cs @@ -4,7 +4,7 @@ using System; using System.Threading; using System.Threading.Tasks; -namespace CryptoExchange.Net.Sockets +namespace CryptoExchange.Net.Sockets.Interfaces { /// /// Socket connection diff --git a/CryptoExchange.Net/Sockets/MessageMatcher.cs b/CryptoExchange.Net/Sockets/MessageMatcher.cs index f3d7cc5..d081477 100644 --- a/CryptoExchange.Net/Sockets/MessageMatcher.cs +++ b/CryptoExchange.Net/Sockets/MessageMatcher.cs @@ -1,11 +1,8 @@ -using CryptoExchange.Net.Interfaces; -using CryptoExchange.Net.Objects; -using CryptoExchange.Net.Objects.Sockets; +using CryptoExchange.Net.Objects; +using CryptoExchange.Net.Sockets.Default; using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace CryptoExchange.Net.Sockets { diff --git a/CryptoExchange.Net/Sockets/MessageRouter.cs b/CryptoExchange.Net/Sockets/MessageRouter.cs index 9c7b28d..e948cb2 100644 --- a/CryptoExchange.Net/Sockets/MessageRouter.cs +++ b/CryptoExchange.Net/Sockets/MessageRouter.cs @@ -1,12 +1,8 @@ -using CryptoExchange.Net.Interfaces; -using CryptoExchange.Net.Objects; -using CryptoExchange.Net.Objects.Sockets; +using CryptoExchange.Net.Objects; +using CryptoExchange.Net.Sockets.Default; using System; -using System.Collections; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace CryptoExchange.Net.Sockets { diff --git a/CryptoExchange.Net/Sockets/PeriodicTaskRegistration.cs b/CryptoExchange.Net/Sockets/PeriodicTaskRegistration.cs index ad62cad..57b5027 100644 --- a/CryptoExchange.Net/Sockets/PeriodicTaskRegistration.cs +++ b/CryptoExchange.Net/Sockets/PeriodicTaskRegistration.cs @@ -1,4 +1,6 @@ using CryptoExchange.Net.Objects; +using CryptoExchange.Net.Sockets.Default; +using CryptoExchange.Net.Sockets.Interfaces; using System; namespace CryptoExchange.Net.Sockets diff --git a/CryptoExchange.Net/Sockets/Query.cs b/CryptoExchange.Net/Sockets/Query.cs index 01deee0..f734f08 100644 --- a/CryptoExchange.Net/Sockets/Query.cs +++ b/CryptoExchange.Net/Sockets/Query.cs @@ -1,9 +1,8 @@ using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects; -using CryptoExchange.Net.Objects.Sockets; +using CryptoExchange.Net.Sockets.Default; +using CryptoExchange.Net.Sockets.Interfaces; using System; -using System.Collections.Generic; -using System.Linq; using System.Threading; using System.Threading.Tasks; diff --git a/CryptoExchange.Net/Testing/Implementations/TestRequest.cs b/CryptoExchange.Net/Testing/Implementations/TestRequest.cs index ed0b062..1cb84ec 100644 --- a/CryptoExchange.Net/Testing/Implementations/TestRequest.cs +++ b/CryptoExchange.Net/Testing/Implementations/TestRequest.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Interfaces; using System; -using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; using System.Text; diff --git a/CryptoExchange.Net/Testing/Implementations/TestResponse.cs b/CryptoExchange.Net/Testing/Implementations/TestResponse.cs index 413c882..17f587a 100644 --- a/CryptoExchange.Net/Testing/Implementations/TestResponse.cs +++ b/CryptoExchange.Net/Testing/Implementations/TestResponse.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Interfaces; using System; -using System.Collections.Generic; using System.IO; using System.Net; using System.Net.Http; diff --git a/CryptoExchange.Net/Testing/Implementations/TestSocket.cs b/CryptoExchange.Net/Testing/Implementations/TestSocket.cs index 3cb9dd4..35ea438 100644 --- a/CryptoExchange.Net/Testing/Implementations/TestSocket.cs +++ b/CryptoExchange.Net/Testing/Implementations/TestSocket.cs @@ -1,12 +1,11 @@ using System; using System.Net.WebSockets; using System.Text; -using System.Text.Json; using System.Threading; using System.Threading.Tasks; -using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects; -using CryptoExchange.Net.Sockets; +using CryptoExchange.Net.Sockets.Default; +using CryptoExchange.Net.Sockets.Default.Interfaces; #pragma warning disable IL2026 // Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code #pragma warning disable IL3050 // Calling members annotated with 'RequiresDynamicCodeAttribute' may break functionality when AOT compiling. diff --git a/CryptoExchange.Net/Testing/Implementations/TestWebsocketFactory.cs b/CryptoExchange.Net/Testing/Implementations/TestWebsocketFactory.cs index 5a87aae..5739721 100644 --- a/CryptoExchange.Net/Testing/Implementations/TestWebsocketFactory.cs +++ b/CryptoExchange.Net/Testing/Implementations/TestWebsocketFactory.cs @@ -1,10 +1,10 @@ -using CryptoExchange.Net.Interfaces; -using CryptoExchange.Net.Objects.Sockets; -using CryptoExchange.Net.Sockets; +using CryptoExchange.Net.Objects.Sockets; +using CryptoExchange.Net.Sockets.Default; +using CryptoExchange.Net.Sockets.Default.Interfaces; +using CryptoExchange.Net.Sockets.HighPerf.Interfaces; using Microsoft.Extensions.Logging; using System; using System.IO.Pipelines; -using System.Threading.Tasks; namespace CryptoExchange.Net.Testing.Implementations { diff --git a/CryptoExchange.Net/Testing/SocketIntegrationTest.cs b/CryptoExchange.Net/Testing/SocketIntegrationTest.cs index e84c129..f099bcc 100644 --- a/CryptoExchange.Net/Testing/SocketIntegrationTest.cs +++ b/CryptoExchange.Net/Testing/SocketIntegrationTest.cs @@ -1,5 +1,4 @@ -using CryptoExchange.Net.Interfaces; -using CryptoExchange.Net.Objects; +using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Sockets; using Microsoft.Extensions.Logging; using System; diff --git a/CryptoExchange.Net/Testing/SocketRequestValidator.cs b/CryptoExchange.Net/Testing/SocketRequestValidator.cs index 24446cd..8787d03 100644 --- a/CryptoExchange.Net/Testing/SocketRequestValidator.cs +++ b/CryptoExchange.Net/Testing/SocketRequestValidator.cs @@ -1,6 +1,5 @@ using CryptoExchange.Net.Clients; using CryptoExchange.Net.Objects; -using CryptoExchange.Net.Objects.Sockets; using CryptoExchange.Net.Testing.Comparers; using System; using System.Collections.Generic; diff --git a/CryptoExchange.Net/Trackers/CompareValue.cs b/CryptoExchange.Net/Trackers/CompareValue.cs index a6fe033..64531a3 100644 --- a/CryptoExchange.Net/Trackers/CompareValue.cs +++ b/CryptoExchange.Net/Trackers/CompareValue.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace CryptoExchange.Net.Trackers { diff --git a/CryptoExchange.Net/Trackers/Klines/IKlineTracker.cs b/CryptoExchange.Net/Trackers/Klines/IKlineTracker.cs index 11b7afc..c83b54a 100644 --- a/CryptoExchange.Net/Trackers/Klines/IKlineTracker.cs +++ b/CryptoExchange.Net/Trackers/Klines/IKlineTracker.cs @@ -1,7 +1,6 @@ using CryptoExchange.Net.Objects; using CryptoExchange.Net.SharedApis; using System; -using System.Collections.Generic; using System.Threading.Tasks; namespace CryptoExchange.Net.Trackers.Klines diff --git a/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs b/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs index 13b2ac0..3c475b5 100644 --- a/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs +++ b/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs @@ -6,7 +6,6 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using System; using System.Collections.Generic; -using System.Diagnostics; using System.Linq; using System.Threading; using System.Threading.Tasks; diff --git a/CryptoExchange.Net/Trackers/Klines/KlinesCompare.cs b/CryptoExchange.Net/Trackers/Klines/KlinesCompare.cs index 6e1deea..3d1a2da 100644 --- a/CryptoExchange.Net/Trackers/Klines/KlinesCompare.cs +++ b/CryptoExchange.Net/Trackers/Klines/KlinesCompare.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.Trackers.Klines +namespace CryptoExchange.Net.Trackers.Klines { /// /// Klines statistics comparison diff --git a/CryptoExchange.Net/Trackers/Klines/KlinesStats.cs b/CryptoExchange.Net/Trackers/Klines/KlinesStats.cs index 2a832f1..f9c1793 100644 --- a/CryptoExchange.Net/Trackers/Klines/KlinesStats.cs +++ b/CryptoExchange.Net/Trackers/Klines/KlinesStats.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace CryptoExchange.Net.Trackers.Klines { diff --git a/CryptoExchange.Net/Trackers/Trades/ITradeTracker.cs b/CryptoExchange.Net/Trackers/Trades/ITradeTracker.cs index 4f08aea..2f81cd3 100644 --- a/CryptoExchange.Net/Trackers/Trades/ITradeTracker.cs +++ b/CryptoExchange.Net/Trackers/Trades/ITradeTracker.cs @@ -1,7 +1,6 @@ using CryptoExchange.Net.Objects; using CryptoExchange.Net.SharedApis; using System; -using System.Collections.Generic; using System.Threading.Tasks; namespace CryptoExchange.Net.Trackers.Trades diff --git a/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs b/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs index 6a39aa1..76c1732 100644 --- a/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs +++ b/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs @@ -6,7 +6,6 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using System; using System.Collections.Generic; -using System.Diagnostics; using System.Linq; using System.Threading; using System.Threading.Tasks; diff --git a/CryptoExchange.Net/Trackers/Trades/TradesCompare.cs b/CryptoExchange.Net/Trackers/Trades/TradesCompare.cs index 1d02593..3264f8e 100644 --- a/CryptoExchange.Net/Trackers/Trades/TradesCompare.cs +++ b/CryptoExchange.Net/Trackers/Trades/TradesCompare.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.Trackers.Trades +namespace CryptoExchange.Net.Trackers.Trades { /// /// Trades statistics comparison diff --git a/CryptoExchange.Net/Trackers/Trades/TradesStats.cs b/CryptoExchange.Net/Trackers/Trades/TradesStats.cs index 74107ca..a0d2edb 100644 --- a/CryptoExchange.Net/Trackers/Trades/TradesStats.cs +++ b/CryptoExchange.Net/Trackers/Trades/TradesStats.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace CryptoExchange.Net.Trackers.Trades {