From 12d5783625d0deedfc88bc7541648964bf60ee4c Mon Sep 17 00:00:00 2001 From: JKorf Date: Mon, 4 Dec 2023 21:31:52 +0100 Subject: [PATCH] wip --- .../Converters/SocketConverter.cs | 111 +++++++++--------- .../Sockets/StreamMessageParseCallback.cs | 2 +- .../Sockets/SocketConnection.cs | 5 + 3 files changed, 64 insertions(+), 54 deletions(-) diff --git a/CryptoExchange.Net/Converters/SocketConverter.cs b/CryptoExchange.Net/Converters/SocketConverter.cs index f36fdee..d7e6fa3 100644 --- a/CryptoExchange.Net/Converters/SocketConverter.cs +++ b/CryptoExchange.Net/Converters/SocketConverter.cs @@ -87,67 +87,72 @@ namespace CryptoExchange.Net.Converters return idInstance; } } + else + { + // Message not identified + // TODO return + } } PostInspectResult? inspectResult = null; object? usedParser = null; - if (token.Type == JTokenType.Object) - { - foreach (var callback in InterpreterPipeline.PostInspectCallbacks.OfType()) - { - bool allFieldsPresent = true; - foreach (var field in callback.TypeFields) - { - var value = accessor.GetStringValue(field.Key); - if (value == null) - { - if (field.Required) - { - allFieldsPresent = false; - break; - } - } - } + //if (token.Type == JTokenType.Object) + //{ + // foreach (var callback in InterpreterPipeline.PostInspectCallbacks.OfType()) + // { + // bool allFieldsPresent = true; + // foreach (var field in callback.TypeFields) + // { + // var value = accessor.GetStringValue(field.Key); + // if (value == null) + // { + // if (field.Required) + // { + // allFieldsPresent = false; + // break; + // } + // } + // } - if (allFieldsPresent) - { - inspectResult = callback.Callback(accessor, processors); - usedParser = callback; - if (inspectResult.Type != null) - break; - } - } - } - else - { - foreach (var callback in InterpreterPipeline.PostInspectCallbacks.OfType()) - { - var typeIdArrayDict = new Dictionary(); - bool allFieldsPresent = true; - var maxIndex = callback.TypeFields.Max(); - if (((JArray)token).Count <= maxIndex) - continue; + // if (allFieldsPresent) + // { + // inspectResult = callback.Callback(accessor, processors); + // usedParser = callback; + // if (inspectResult.Type != null) + // break; + // } + // } + //} + //else + //{ + // foreach (var callback in InterpreterPipeline.PostInspectCallbacks.OfType()) + // { + // var typeIdArrayDict = new Dictionary(); + // bool allFieldsPresent = true; + // var maxIndex = callback.TypeFields.Max(); + // if (((JArray)token).Count <= maxIndex) + // continue; - foreach (var field in callback.TypeFields) - { - var value = token[field]; - if (value == null) - { - allFieldsPresent = false; - break; - } + // foreach (var field in callback.TypeFields) + // { + // var value = token[field]; + // if (value == null) + // { + // allFieldsPresent = false; + // break; + // } - typeIdArrayDict[field] = value.ToString(); - } + // typeIdArrayDict[field] = value.ToString(); + // } - if (allFieldsPresent) - { - inspectResult = callback.Callback(typeIdArrayDict, processors); - usedParser = callback; - break; - } - } - } + // if (allFieldsPresent) + // { + // inspectResult = callback.Callback(typeIdArrayDict, processors); + // usedParser = callback; + // break; + // } + // } + //} if (usedParser == null) { diff --git a/CryptoExchange.Net/Objects/Sockets/StreamMessageParseCallback.cs b/CryptoExchange.Net/Objects/Sockets/StreamMessageParseCallback.cs index cd87415..0356d7e 100644 --- a/CryptoExchange.Net/Objects/Sockets/StreamMessageParseCallback.cs +++ b/CryptoExchange.Net/Objects/Sockets/StreamMessageParseCallback.cs @@ -15,7 +15,7 @@ namespace CryptoExchange.Net.Objects.Sockets public Func? PreProcessCallback { get; set; } public List PreInspectCallbacks { get; set; } = new List(); public Func GetIdentity { get; set; } - public List PostInspectCallbacks { get; set; } = new List(); + //public List PostInspectCallbacks { get; set; } = new List(); public Func ObjectInitializer { get; set; } = SocketConverter.InstantiateMessageObject; } diff --git a/CryptoExchange.Net/Sockets/SocketConnection.cs b/CryptoExchange.Net/Sockets/SocketConnection.cs index a32b14d..f876b12 100644 --- a/CryptoExchange.Net/Sockets/SocketConnection.cs +++ b/CryptoExchange.Net/Sockets/SocketConnection.cs @@ -308,6 +308,7 @@ namespace CryptoExchange.Net.Sockets /// Handle a message /// /// + /// /// protected virtual async Task HandleStreamMessage(WebSocketMessageType type, Stream stream) { @@ -439,6 +440,10 @@ namespace CryptoExchange.Net.Sockets _socket.Dispose(); } + /// + /// Whether or not a new subscription can be added to this connection + /// + /// public bool CanAddSubscription() => Status == SocketStatus.None || Status == SocketStatus.Connected; ///