From fc6503035a97d8b536644338513b92805d70fd0a Mon Sep 17 00:00:00 2001 From: JKorf Date: Sat, 20 Jan 2024 19:36:08 +0100 Subject: [PATCH] Cleanup --- CryptoExchange.Net/Clients/BaseClient.cs | 1 - CryptoExchange.Net/Clients/SocketApiClient.cs | 7 - CryptoExchange.Net/CommonObjects/Enums.cs | 6 +- CryptoExchange.Net/CommonObjects/OrderBook.cs | 1 - CryptoExchange.Net/CommonObjects/OrderId.cs | 6 +- CryptoExchange.Net/CommonObjects/Ticker.cs | 4 +- .../Converters/JTokenAccessor.cs | 158 ------------------ .../Converters/SocketConverter.cs | 58 ------- .../CommonClients/IFuturesClient.cs | 1 - .../Interfaces/CommonClients/ISpotClient.cs | 1 - .../Interfaces/IMessageProcessor.cs | 1 - .../Interfaces/IRequestFactory.cs | 1 - .../Interfaces/IRestApiClient.cs | 5 +- CryptoExchange.Net/Interfaces/IRestClient.cs | 2 - .../Interfaces/ISocketApiClient.cs | 4 +- .../Interfaces/ISocketClient.cs | 2 - CryptoExchange.Net/Interfaces/IWebsocket.cs | 6 +- .../Objects/Sockets/ParsedMessage.cs | 54 ------ .../Sockets/StreamMessageParseCallback.cs | 19 --- .../Objects/Sockets/UpdateSubscription.cs | 3 +- .../Objects/Sockets/WebSocketParameters.cs | 18 -- .../Objects/TradeEnvironment.cs | 4 +- CryptoExchange.Net/ParsingUtils.cs | 36 ---- CryptoExchange.Net/Requests/RequestFactory.cs | 2 - .../Sockets/CryptoExchangeWebSocketClient.cs | 3 - .../MessageParsing/JsonNetMessageData.cs | 1 - .../Sockets/SocketConnection.cs | 8 +- .../Sockets/SystemSubscription.cs | 1 - .../Sockets/WebsocketFactory.cs | 1 - 29 files changed, 14 insertions(+), 400 deletions(-) delete mode 100644 CryptoExchange.Net/Converters/JTokenAccessor.cs delete mode 100644 CryptoExchange.Net/Converters/SocketConverter.cs delete mode 100644 CryptoExchange.Net/Objects/Sockets/ParsedMessage.cs delete mode 100644 CryptoExchange.Net/Objects/Sockets/StreamMessageParseCallback.cs delete mode 100644 CryptoExchange.Net/ParsingUtils.cs diff --git a/CryptoExchange.Net/Clients/BaseClient.cs b/CryptoExchange.Net/Clients/BaseClient.cs index 2a7a589..6a2c280 100644 --- a/CryptoExchange.Net/Clients/BaseClient.cs +++ b/CryptoExchange.Net/Clients/BaseClient.cs @@ -1,5 +1,4 @@ using CryptoExchange.Net.Authentication; -using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Options; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; diff --git a/CryptoExchange.Net/Clients/SocketApiClient.cs b/CryptoExchange.Net/Clients/SocketApiClient.cs index 57f3180..8cf3c1d 100644 --- a/CryptoExchange.Net/Clients/SocketApiClient.cs +++ b/CryptoExchange.Net/Clients/SocketApiClient.cs @@ -1,4 +1,3 @@ -using CryptoExchange.Net.Converters; using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Options; @@ -41,11 +40,6 @@ namespace CryptoExchange.Net /// protected TimeSpan KeepAliveInterval { get; set; } = TimeSpan.FromSeconds(10); - /// - /// Delegate used for manipulating data received from socket connections before it is processed by listeners - /// - protected Func? interceptor; - /// /// Handlers for data from the socket which doesn't need to be forwarded to the caller. Ping or welcome messages for example. /// @@ -498,7 +492,6 @@ namespace CryptoExchange.Net protected virtual WebSocketParameters GetWebSocketParameters(string address) => new(new Uri(address), ClientOptions.AutoReconnect) { - Interceptor = interceptor, KeepAliveInterval = KeepAliveInterval, ReconnectInterval = ClientOptions.ReconnectInterval, RateLimiters = RateLimiters, diff --git a/CryptoExchange.Net/CommonObjects/Enums.cs b/CryptoExchange.Net/CommonObjects/Enums.cs index 7d1986f..1d73e03 100644 --- a/CryptoExchange.Net/CommonObjects/Enums.cs +++ b/CryptoExchange.Net/CommonObjects/Enums.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.CommonObjects +namespace CryptoExchange.Net.CommonObjects { /// /// Order type diff --git a/CryptoExchange.Net/CommonObjects/OrderBook.cs b/CryptoExchange.Net/CommonObjects/OrderBook.cs index 31f714d..2703675 100644 --- a/CryptoExchange.Net/CommonObjects/OrderBook.cs +++ b/CryptoExchange.Net/CommonObjects/OrderBook.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Text; namespace CryptoExchange.Net.CommonObjects { diff --git a/CryptoExchange.Net/CommonObjects/OrderId.cs b/CryptoExchange.Net/CommonObjects/OrderId.cs index 2827a0e..333e742 100644 --- a/CryptoExchange.Net/CommonObjects/OrderId.cs +++ b/CryptoExchange.Net/CommonObjects/OrderId.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace CryptoExchange.Net.CommonObjects +namespace CryptoExchange.Net.CommonObjects { /// /// Id of an order diff --git a/CryptoExchange.Net/CommonObjects/Ticker.cs b/CryptoExchange.Net/CommonObjects/Ticker.cs index e5c527a..4513bf5 100644 --- a/CryptoExchange.Net/CommonObjects/Ticker.cs +++ b/CryptoExchange.Net/CommonObjects/Ticker.cs @@ -1,6 +1,4 @@ -using System; - -namespace CryptoExchange.Net.CommonObjects +namespace CryptoExchange.Net.CommonObjects { /// /// Ticker data diff --git a/CryptoExchange.Net/Converters/JTokenAccessor.cs b/CryptoExchange.Net/Converters/JTokenAccessor.cs deleted file mode 100644 index c21f330..0000000 --- a/CryptoExchange.Net/Converters/JTokenAccessor.cs +++ /dev/null @@ -1,158 +0,0 @@ -//using CryptoExchange.Net.Interfaces; -//using CryptoExchange.Net.Objects.Sockets; -//using Newtonsoft.Json; -//using Newtonsoft.Json.Linq; -//using System; -//using System.Collections.Generic; -//using System.IO; -//using System.Linq; -//using System.Runtime.InteropServices.ComTypes; -//using System.Text; - -//namespace CryptoExchange.Net.Converters -//{ -// internal class JTokenAccessor : IMessageAccessor -// { -// private readonly JToken _token; -// private readonly Stream _stream; -// private readonly StreamReader _reader; -// private Dictionary _cache = new Dictionary(); -// private static JsonSerializer _serializer = JsonSerializer.Create(SerializerOptions.WithConverters); - -// public JTokenAccessor(Stream stream) -// { -// _stream = stream; -// _reader = new StreamReader(stream, Encoding.UTF8, false, (int)stream.Length, true); -// using var jsonTextReader = new JsonTextReader(_reader); -// JToken token; -// try -// { -// _token = JToken.Load(jsonTextReader); -// } -// catch (Exception ex) -// { -// // Not a json message -// throw; -// } -// } - -// public BaseParsedMessage Instantiate(Type type) -// { -// var resultMessageType = typeof(ParsedMessage<>).MakeGenericType(type); -// var instance = (BaseParsedMessage)Activator.CreateInstance(resultMessageType, type == null ? null : _token.ToObject(type, _serializer)); -// return instance; -// } - -// public string GetOriginalString() -// { -// _stream.Position = 0; -// return _reader.ReadToEnd(); -// } - -// public int? GetArrayIntValue(string? key, int index) -// { -// var accessToken = key == null ? _token : GetToken(key); -// if (accessToken == null || accessToken is not JArray arr) -// return null; -// return arr[index].Value(); -// } - -// public string? GetArrayStringValue(string? key, int index) -// { -// var accessToken = key == null ? _token : GetToken(key); -// if (accessToken == null || accessToken is not JArray arr) -// return null; - -// if (arr.Count <= index) -// return null; - -// if (arr[index].Type != JTokenType.String) -// return null; - -// return arr[index].Value(); -// } - -// public int? GetCount(string key) -// { -// var accessToken = GetToken(key); -// return accessToken.Count(); -// } - -// public int? GetIntValue(string key) -// { -// var accessToken = GetToken(key); -// return accessToken?.Value(); -// } - -// public string? GetStringValue(string key) -// { -// var accessToken = GetToken(key); -// if (accessToken?.Type == JTokenType.Object) -// return ((JObject)accessToken).Properties().First().Name; - -// return accessToken?.ToString(); -// } - -// public bool IsObject(string? key) => _token.Type == JTokenType.Object; -// public bool IsArray(IEnumerable indexes) -// { -// var item = _token; -// foreach(var index in indexes) -// { -// if (item.Type != JTokenType.Array) -// return false; - -// var arr = ((JArray)item); -// if (arr.Count <= index) -// return false; - -// item = arr[index]; -// } - -// return item.Type == JTokenType.Array; -// } - -// public bool IsEmptyArray(IEnumerable indexes) -// { -// var item = _token; -// foreach (var index in indexes) -// { -// if (item.Type != JTokenType.Array) -// return false; - -// var arr = ((JArray)item); -// if (arr.Count <= index) -// return false; - -// item = arr[index]; -// } - -// return item.Type == JTokenType.Array && !item.HasValues; -// } - -// private JToken? GetToken(string key) -// { -// if (key == null) -// return _token; - -// if (_cache.TryGetValue(key, out var token)) -// return token; - -// var splitTokens = key.Split(new char[] { ':' }); -// var accessToken = _token; -// foreach (var splitToken in splitTokens) -// { -// if (accessToken.Type == JTokenType.Array) -// return null; - -// accessToken = accessToken[splitToken]; - -// if (accessToken == null) -// break; -// } - -// _cache.Add(key, accessToken); -// return accessToken; -// } -// } -//} diff --git a/CryptoExchange.Net/Converters/SocketConverter.cs b/CryptoExchange.Net/Converters/SocketConverter.cs deleted file mode 100644 index 3e45655..0000000 --- a/CryptoExchange.Net/Converters/SocketConverter.cs +++ /dev/null @@ -1,58 +0,0 @@ -//using CryptoExchange.Net.Interfaces; -//using CryptoExchange.Net.Objects; -//using CryptoExchange.Net.Objects.Sockets; -//using CryptoExchange.Net.Sockets; -//using Newtonsoft.Json; -//using Newtonsoft.Json.Linq; -//using System; -//using System.Collections.Generic; -//using System.IO; -//using System.Linq; -//using System.Net.WebSockets; -//using System.Text; - -//namespace CryptoExchange.Net.Converters -//{ -// /// -// /// Socket message converter -// /// -// public abstract class SocketConverter -// { - -// public abstract MessageInterpreterPipeline InterpreterPipeline { get; } - -// /// -// public BaseParsedMessage? ReadJson(WebSocketMessageType websocketMessageType, Stream stream, SocketListenerManager listenerManager, bool outputOriginalData) -// { -// // Start reading the data -// // Once we reach the properties that identify the message we save those in a dict -// // Once all id properties have been read callback to see what the deserialization type should be -// // Deserialize to the correct type - -// if (InterpreterPipeline.PreProcessCallback != null) -// stream = InterpreterPipeline.PreProcessCallback(websocketMessageType, stream); - -// var accessor = new JTokenAccessor(stream); -// if (accessor == null) -// return null; - -// var streamIdentity = InterpreterPipeline.GetStreamIdentifier(accessor); -// if (streamIdentity == null) -// return null; - -// var typeIdentity = InterpreterPipeline.GetTypeIdentifier(accessor); -// var typeResult = listenerManager.IdToType(streamIdentity, typeIdentity); -// if (typeResult == null) -// return null; - -// var idInstance = accessor.Instantiate(typeResult); -// if (outputOriginalData) -// idInstance.OriginalData = idInstance.OriginalData; - -// idInstance.StreamIdentifier = streamIdentity; -// idInstance.TypeIdentifier = typeIdentity; -// idInstance.Parsed = true; -// return idInstance; -// } -// } -//} diff --git a/CryptoExchange.Net/Interfaces/CommonClients/IFuturesClient.cs b/CryptoExchange.Net/Interfaces/CommonClients/IFuturesClient.cs index af6c214..48c9975 100644 --- a/CryptoExchange.Net/Interfaces/CommonClients/IFuturesClient.cs +++ b/CryptoExchange.Net/Interfaces/CommonClients/IFuturesClient.cs @@ -2,7 +2,6 @@ using System.Threading; using System.Threading.Tasks; using CryptoExchange.Net.CommonObjects; -using CryptoExchange.Net.Interfaces.CommonClients; using CryptoExchange.Net.Objects; namespace CryptoExchange.Net.Interfaces.CommonClients diff --git a/CryptoExchange.Net/Interfaces/CommonClients/ISpotClient.cs b/CryptoExchange.Net/Interfaces/CommonClients/ISpotClient.cs index 601786b..15c2fd1 100644 --- a/CryptoExchange.Net/Interfaces/CommonClients/ISpotClient.cs +++ b/CryptoExchange.Net/Interfaces/CommonClients/ISpotClient.cs @@ -1,5 +1,4 @@ using CryptoExchange.Net.CommonObjects; -using CryptoExchange.Net.Interfaces.CommonClients; using CryptoExchange.Net.Objects; using System.Threading; using System.Threading.Tasks; diff --git a/CryptoExchange.Net/Interfaces/IMessageProcessor.cs b/CryptoExchange.Net/Interfaces/IMessageProcessor.cs index 299d16e..39e13e2 100644 --- a/CryptoExchange.Net/Interfaces/IMessageProcessor.cs +++ b/CryptoExchange.Net/Interfaces/IMessageProcessor.cs @@ -3,7 +3,6 @@ using CryptoExchange.Net.Objects.Sockets; using CryptoExchange.Net.Sockets; using System; using System.Collections.Generic; -using System.Text; using System.Threading.Tasks; namespace CryptoExchange.Net.Interfaces diff --git a/CryptoExchange.Net/Interfaces/IRequestFactory.cs b/CryptoExchange.Net/Interfaces/IRequestFactory.cs index bcd1fa9..66ff906 100644 --- a/CryptoExchange.Net/Interfaces/IRequestFactory.cs +++ b/CryptoExchange.Net/Interfaces/IRequestFactory.cs @@ -1,5 +1,4 @@ using CryptoExchange.Net.Objects; -using CryptoExchange.Net.Objects.Options; using System; using System.Net.Http; diff --git a/CryptoExchange.Net/Interfaces/IRestApiClient.cs b/CryptoExchange.Net/Interfaces/IRestApiClient.cs index b82b494..9d96fbd 100644 --- a/CryptoExchange.Net/Interfaces/IRestApiClient.cs +++ b/CryptoExchange.Net/Interfaces/IRestApiClient.cs @@ -1,7 +1,4 @@ -using CryptoExchange.Net.Objects; -using System; - -namespace CryptoExchange.Net.Interfaces +namespace CryptoExchange.Net.Interfaces { /// /// Base rest API client diff --git a/CryptoExchange.Net/Interfaces/IRestClient.cs b/CryptoExchange.Net/Interfaces/IRestClient.cs index 704a4e5..b2510e2 100644 --- a/CryptoExchange.Net/Interfaces/IRestClient.cs +++ b/CryptoExchange.Net/Interfaces/IRestClient.cs @@ -1,6 +1,4 @@ using System; -using CryptoExchange.Net.Authentication; -using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Options; namespace CryptoExchange.Net.Interfaces diff --git a/CryptoExchange.Net/Interfaces/ISocketApiClient.cs b/CryptoExchange.Net/Interfaces/ISocketApiClient.cs index 8623514..f567d67 100644 --- a/CryptoExchange.Net/Interfaces/ISocketApiClient.cs +++ b/CryptoExchange.Net/Interfaces/ISocketApiClient.cs @@ -1,7 +1,5 @@ -using CryptoExchange.Net.Objects; -using CryptoExchange.Net.Objects.Options; +using CryptoExchange.Net.Objects.Options; using CryptoExchange.Net.Objects.Sockets; -using System; using System.Threading.Tasks; namespace CryptoExchange.Net.Interfaces diff --git a/CryptoExchange.Net/Interfaces/ISocketClient.cs b/CryptoExchange.Net/Interfaces/ISocketClient.cs index 108f7ed..514760b 100644 --- a/CryptoExchange.Net/Interfaces/ISocketClient.cs +++ b/CryptoExchange.Net/Interfaces/ISocketClient.cs @@ -1,7 +1,5 @@ using System; using System.Threading.Tasks; -using CryptoExchange.Net.Authentication; -using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Options; using CryptoExchange.Net.Objects.Sockets; diff --git a/CryptoExchange.Net/Interfaces/IWebsocket.cs b/CryptoExchange.Net/Interfaces/IWebsocket.cs index 6090a79..7dc9736 100644 --- a/CryptoExchange.Net/Interfaces/IWebsocket.cs +++ b/CryptoExchange.Net/Interfaces/IWebsocket.cs @@ -1,10 +1,6 @@ -using CryptoExchange.Net.Objects; -using CryptoExchange.Net.Sockets; -using System; +using System; using System.IO; using System.Net.WebSockets; -using System.Security.Authentication; -using System.Text; using System.Threading.Tasks; namespace CryptoExchange.Net.Interfaces diff --git a/CryptoExchange.Net/Objects/Sockets/ParsedMessage.cs b/CryptoExchange.Net/Objects/Sockets/ParsedMessage.cs deleted file mode 100644 index 97f802a..0000000 --- a/CryptoExchange.Net/Objects/Sockets/ParsedMessage.cs +++ /dev/null @@ -1,54 +0,0 @@ -//namespace CryptoExchange.Net.Objects.Sockets -//{ -// /// -// /// Parsed message object -// /// -// public abstract class BaseParsedMessage -// { -// /// -// /// Stream identifier string -// /// -// public string StreamIdentifier { get; set; } = null!; -// /// -// /// Type identifier string -// /// -// public string TypeIdentifier { get; set; } = null!; -// /// -// /// Original data if the option is enabled -// /// -// public string? OriginalData { get; set; } -// /// -// /// If parsed -// /// -// public bool Parsed { get; set; } - -// /// -// /// Get the data object -// /// -// /// -// public abstract object Data { get; } -// } - -// /// -// /// Parsed message object -// /// -// /// Data type -// public class ParsedMessage : BaseParsedMessage -// { -// /// -// /// Parsed data object -// /// -// public override object? Data { get; } - -// public T? TypedData => (T)Data; - -// /// -// /// ctor -// /// -// /// -// public ParsedMessage(T? data) -// { -// Data = data; -// } -// } -//} diff --git a/CryptoExchange.Net/Objects/Sockets/StreamMessageParseCallback.cs b/CryptoExchange.Net/Objects/Sockets/StreamMessageParseCallback.cs deleted file mode 100644 index f0f1c02..0000000 --- a/CryptoExchange.Net/Objects/Sockets/StreamMessageParseCallback.cs +++ /dev/null @@ -1,19 +0,0 @@ -//using CryptoExchange.Net.Converters; -//using CryptoExchange.Net.Interfaces; -//using CryptoExchange.Net.Sockets; -//using Newtonsoft.Json.Linq; -//using System; -//using System.Collections.Generic; -//using System.IO; -//using System.Net.WebSockets; -//using System.Text; - -//namespace CryptoExchange.Net.Objects.Sockets -//{ -// public class MessageInterpreterPipeline -// { -// public Func? PreProcessCallback { get; set; } -// public Func GetStreamIdentifier { get; set; } -// public Func GetTypeIdentifier { get; set; } = (accessor, streamId) => streamId; -// } -//} diff --git a/CryptoExchange.Net/Objects/Sockets/UpdateSubscription.cs b/CryptoExchange.Net/Objects/Sockets/UpdateSubscription.cs index 31673a6..9f43e94 100644 --- a/CryptoExchange.Net/Objects/Sockets/UpdateSubscription.cs +++ b/CryptoExchange.Net/Objects/Sockets/UpdateSubscription.cs @@ -1,5 +1,4 @@ -using CryptoExchange.Net.Objects; -using CryptoExchange.Net.Sockets; +using CryptoExchange.Net.Sockets; using System; using System.Threading.Tasks; diff --git a/CryptoExchange.Net/Objects/Sockets/WebSocketParameters.cs b/CryptoExchange.Net/Objects/Sockets/WebSocketParameters.cs index c4dde81..4d05b6e 100644 --- a/CryptoExchange.Net/Objects/Sockets/WebSocketParameters.cs +++ b/CryptoExchange.Net/Objects/Sockets/WebSocketParameters.cs @@ -1,10 +1,7 @@ using CryptoExchange.Net.Interfaces; -using CryptoExchange.Net.Objects; using System; using System.Collections.Generic; -using System.IO; using System.Text; -using System.Threading.Tasks; namespace CryptoExchange.Net.Objects.Sockets { @@ -58,21 +55,6 @@ namespace CryptoExchange.Net.Objects.Sockets /// public IEnumerable? RateLimiters { get; set; } - /// - /// Origin header value to send in the connection handshake - /// - public string? Origin { get; set; } - - /// - /// Delegate used for manipulating data received from socket connections before it is processed by listeners - /// - public Func? Interceptor { get; set; } - - /// - /// Delegate used for processing string data received from socket connections before it is processed by handlers - /// - public Func? DataInterpreterString { get; set; } - /// /// Encoding for sending/receiving data /// diff --git a/CryptoExchange.Net/Objects/TradeEnvironment.cs b/CryptoExchange.Net/Objects/TradeEnvironment.cs index 7ca760c..70dcbae 100644 --- a/CryptoExchange.Net/Objects/TradeEnvironment.cs +++ b/CryptoExchange.Net/Objects/TradeEnvironment.cs @@ -1,6 +1,4 @@ -using System.Collections.Generic; - -namespace CryptoExchange.Net.Objects +namespace CryptoExchange.Net.Objects { /// /// Trade environment names diff --git a/CryptoExchange.Net/ParsingUtils.cs b/CryptoExchange.Net/ParsingUtils.cs deleted file mode 100644 index e4c8953..0000000 --- a/CryptoExchange.Net/ParsingUtils.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using System.IO; -using System.Text; - -namespace CryptoExchange.Net -{ - /// - /// Parsing utility methods - /// - public static class ParsingUtils - { - /// - /// Read the stream as string - /// - /// - /// - public static string GetString(Stream stream) - { - using var reader = new StreamReader(stream, Encoding.UTF8, false, (int)stream.Length, true); - return reader.ReadToEnd(); - } - - /// - /// Read the stream and parse to JToken - /// - /// - /// - public static JToken GetJToken(Stream x) - { - using var sr = new StreamReader(x, Encoding.UTF8, false, (int)x.Length, true); - using var jsonTextReader = new JsonTextReader(sr); - return JToken.Load(jsonTextReader); - } - } -} diff --git a/CryptoExchange.Net/Requests/RequestFactory.cs b/CryptoExchange.Net/Requests/RequestFactory.cs index 63d897c..b909870 100644 --- a/CryptoExchange.Net/Requests/RequestFactory.cs +++ b/CryptoExchange.Net/Requests/RequestFactory.cs @@ -1,10 +1,8 @@ using System; using System.Net; using System.Net.Http; -using System.Runtime.InteropServices; using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects; -using CryptoExchange.Net.Objects.Options; namespace CryptoExchange.Net.Requests { diff --git a/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs b/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs index 325ebe1..6053a8c 100644 --- a/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs +++ b/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs @@ -591,9 +591,6 @@ namespace CryptoExchange.Net.Sockets LastActionTime = DateTime.UtcNow; stream.Position = 0; - if (Parameters.Interceptor != null) - stream = Parameters.Interceptor.Invoke(stream); - if (OnStreamMessage != null) await OnStreamMessage.Invoke(type, stream).ConfigureAwait(false); } diff --git a/CryptoExchange.Net/Sockets/MessageParsing/JsonNetMessageData.cs b/CryptoExchange.Net/Sockets/MessageParsing/JsonNetMessageData.cs index e2af385..c9da8e9 100644 --- a/CryptoExchange.Net/Sockets/MessageParsing/JsonNetMessageData.cs +++ b/CryptoExchange.Net/Sockets/MessageParsing/JsonNetMessageData.cs @@ -3,7 +3,6 @@ using CryptoExchange.Net.Sockets.MessageParsing.Interfaces; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; -using System.Collections.Generic; using System.IO; using System.Text; diff --git a/CryptoExchange.Net/Sockets/SocketConnection.cs b/CryptoExchange.Net/Sockets/SocketConnection.cs index 25ffa24..660e377 100644 --- a/CryptoExchange.Net/Sockets/SocketConnection.cs +++ b/CryptoExchange.Net/Sockets/SocketConnection.cs @@ -10,8 +10,6 @@ using System.Net.WebSockets; using System.IO; using CryptoExchange.Net.Objects.Sockets; using System.Text; -using System.Diagnostics.CodeAnalysis; -using CryptoExchange.Net.Converters; using System.Diagnostics; using CryptoExchange.Net.Sockets.MessageParsing; @@ -351,6 +349,8 @@ namespace CryptoExchange.Net.Sockets /// protected virtual async Task HandleStreamMessage(WebSocketMessageType type, Stream stream) { + var sw = Stopwatch.StartNew(); + // 1. Decrypt/Preprocess if necessary stream = ApiClient.PreprocessStreamMessage(type, stream); @@ -381,6 +381,7 @@ namespace CryptoExchange.Net.Sockets } _logger.LogTrace("Socket {SocketId} {Count} processors matched to message with listener identifier {ListenerId}", SocketId, processors.Count, listenId); + var totalUserTime = 0; foreach (var processor in processors) { // 4. Determine the type to deserialize to @@ -406,7 +407,9 @@ namespace CryptoExchange.Net.Sockets // 6. Hand of the message to the subscription try { + var innerSw = Stopwatch.StartNew(); await processor.HandleAsync(this, new DataEvent(deserialized, null, message.RawData, message.ReceiveTime, null)).ConfigureAwait(false); + totalUserTime += (int)innerSw.ElapsedMilliseconds; } catch (Exception ex) { @@ -417,6 +420,7 @@ namespace CryptoExchange.Net.Sockets } stream.Dispose(); + _logger.LogTrace($"Socket {SocketId} message processed in {(int)sw.ElapsedMilliseconds}ms ({totalUserTime - sw.ElapsedMilliseconds}ms parsing)"); } /// diff --git a/CryptoExchange.Net/Sockets/SystemSubscription.cs b/CryptoExchange.Net/Sockets/SystemSubscription.cs index f4e680b..625b591 100644 --- a/CryptoExchange.Net/Sockets/SystemSubscription.cs +++ b/CryptoExchange.Net/Sockets/SystemSubscription.cs @@ -2,7 +2,6 @@ using CryptoExchange.Net.Objects.Sockets; using Microsoft.Extensions.Logging; using System; -using System.Collections.Generic; using System.Threading.Tasks; namespace CryptoExchange.Net.Sockets diff --git a/CryptoExchange.Net/Sockets/WebsocketFactory.cs b/CryptoExchange.Net/Sockets/WebsocketFactory.cs index 6113de4..286d37d 100644 --- a/CryptoExchange.Net/Sockets/WebsocketFactory.cs +++ b/CryptoExchange.Net/Sockets/WebsocketFactory.cs @@ -1,7 +1,6 @@ using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects.Sockets; using Microsoft.Extensions.Logging; -using System; namespace CryptoExchange.Net.Sockets {