From ad3959a8e9f611fa7899220042f22a5891acdb82 Mon Sep 17 00:00:00 2001 From: JKorf Date: Sun, 29 Oct 2023 21:28:46 +0100 Subject: [PATCH] wip --- .../Converters/SocketConverter.cs | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/CryptoExchange.Net/Converters/SocketConverter.cs b/CryptoExchange.Net/Converters/SocketConverter.cs index be27734..da99e64 100644 --- a/CryptoExchange.Net/Converters/SocketConverter.cs +++ b/CryptoExchange.Net/Converters/SocketConverter.cs @@ -10,7 +10,8 @@ namespace CryptoExchange.Net.Converters { public abstract class SocketConverter { - public abstract string[] IdFields { get; } + public virtual string[]? SubscriptionIdFields => null; + public abstract string[] TypeIdFields { get; } public abstract Type? GetDeserializationType(Dictionary idValues, List listeners); @@ -33,23 +34,43 @@ namespace CryptoExchange.Net.Converters return null; } - var dict = new Dictionary(); - foreach(var idField in IdFields) + var typeIdDict = new Dictionary(); + foreach(var idField in TypeIdFields) { var splitTokens = idField.Split(new char[] { ':' }); var accessToken = token; foreach (var splitToken in splitTokens) { accessToken = accessToken[splitToken]; + if (accessToken == null) + break; } - dict[idField] = accessToken?.ToString(); + typeIdDict[idField] = accessToken?.ToString(); } - var resultType = GetDeserializationType(dict, listeners); string idString = ""; - foreach(var item in dict) - idString += item.Value; + if (SubscriptionIdFields != null) + { + foreach (var idField in SubscriptionIdFields) + { + var splitTokens = idField.Split(new char[] { ':' }); + var accessToken = token; + foreach (var splitToken in splitTokens) + { + accessToken = accessToken[splitToken]; + if (accessToken == null) + break; + } + idString += accessToken?.ToString(); + } + } + else + { + foreach (var item in typeIdDict) + idString += item.Value; + } + var resultType = GetDeserializationType(typeIdDict, listeners); return new ParsedMessage { Identifier = idString,