From 0d3ccf25a732065d0263f4f0e46d88f1008ecfac Mon Sep 17 00:00:00 2001 From: Jkorf Date: Tue, 7 Apr 2026 16:35:43 +0200 Subject: [PATCH] wip --- .../Converters/SystemTextJson/EnumConverter.cs | 2 ++ .../Sockets/Default/Routing/RoutingTable.cs | 3 ++- .../Sockets/Default/SocketConnection.cs | 11 +---------- .../Sockets/Interfaces/IMessageProcessor.cs | 2 +- .../Testing/SharedRestRequestValidator.cs | 2 ++ 5 files changed, 8 insertions(+), 12 deletions(-) diff --git a/CryptoExchange.Net/Converters/SystemTextJson/EnumConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/EnumConverter.cs index 687ba5d..c6f0f1b 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/EnumConverter.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/EnumConverter.cs @@ -335,7 +335,9 @@ namespace CryptoExchange.Net.Converters.SystemTextJson var mappingStringToEnum = new List(); var mappingEnumToString = new Dictionary(); +#pragma warning disable IL2080 var enumMembers = _enumType.GetFields(); +#pragma warning restore IL2080 foreach (var member in enumMembers) { var maps = member.GetCustomAttributes(typeof(MapAttribute), false); diff --git a/CryptoExchange.Net/Sockets/Default/Routing/RoutingTable.cs b/CryptoExchange.Net/Sockets/Default/Routing/RoutingTable.cs index 7ef699c..2b6e3c8 100644 --- a/CryptoExchange.Net/Sockets/Default/Routing/RoutingTable.cs +++ b/CryptoExchange.Net/Sockets/Default/Routing/RoutingTable.cs @@ -25,7 +25,8 @@ namespace CryptoExchange.Net.Sockets.Default.Routing if (!_routeTableEntries.ContainsKey(route.TypeIdentifier)) _routeTableEntries.Add(route.TypeIdentifier, new RoutingTableEntry(route.DeserializationType)); - _routeTableEntries[route.TypeIdentifier].Handlers.Add(entry); + if (!_routeTableEntries[route.TypeIdentifier].Handlers.Contains(entry)) + _routeTableEntries[route.TypeIdentifier].Handlers.Add(entry); } } } diff --git a/CryptoExchange.Net/Sockets/Default/SocketConnection.cs b/CryptoExchange.Net/Sockets/Default/SocketConnection.cs index d69f66b..0753149 100644 --- a/CryptoExchange.Net/Sockets/Default/SocketConnection.cs +++ b/CryptoExchange.Net/Sockets/Default/SocketConnection.cs @@ -9,11 +9,8 @@ using CryptoExchange.Net.Sockets.Default.Routing; using CryptoExchange.Net.Sockets.Interfaces; using Microsoft.Extensions.Logging; using System; -using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Data; -using System.Diagnostics; using System.Linq; using System.Net.WebSockets; using System.Text; @@ -1153,13 +1150,7 @@ namespace CryptoExchange.Net.Sockets.Default { var updatedList = new List(_listeners); updatedList.Add(processor); - processor.OnMessageRouterUpdated += () => - { - BuildRoutingTable(); -#if DEBUG - _logger.LogTrace("MessageRouter updated, new routing table:\r\n" + _routeTable.ToString()); -#endif - }; + processor.OnMessageRouterUpdated += BuildRoutingTable; _listeners = updatedList.AsReadOnly(); if (processor.MessageRouter.Routes.Length > 0) { diff --git a/CryptoExchange.Net/Sockets/Interfaces/IMessageProcessor.cs b/CryptoExchange.Net/Sockets/Interfaces/IMessageProcessor.cs index aa24c8a..7c7561f 100644 --- a/CryptoExchange.Net/Sockets/Interfaces/IMessageProcessor.cs +++ b/CryptoExchange.Net/Sockets/Interfaces/IMessageProcessor.cs @@ -22,7 +22,7 @@ namespace CryptoExchange.Net.Sockets.Interfaces /// /// Event when the message router for this processor has been changed /// - public event Action OnMessageRouterUpdated; + public event Action? OnMessageRouterUpdated; /// /// Handle a message /// diff --git a/CryptoExchange.Net/Testing/SharedRestRequestValidator.cs b/CryptoExchange.Net/Testing/SharedRestRequestValidator.cs index 498222a..571f8a6 100644 --- a/CryptoExchange.Net/Testing/SharedRestRequestValidator.cs +++ b/CryptoExchange.Net/Testing/SharedRestRequestValidator.cs @@ -48,6 +48,7 @@ namespace CryptoExchange.Net.Testing /// Method invocation /// Method name for looking up json test values /// Request options + /// Callback to validate the response model /// /// public Task ValidateAsync( @@ -65,6 +66,7 @@ namespace CryptoExchange.Net.Testing /// Method invocation /// Method name for looking up json test values /// Request options + /// Callback to validate the response model /// /// public async Task ValidateAsync(