mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2025-06-07 16:06:15 +00:00
wip
This commit is contained in:
parent
b640690a0f
commit
12d5783625
@ -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<PostInspectCallback>())
|
||||
{
|
||||
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<PostInspectCallback>())
|
||||
// {
|
||||
// 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<PostInspectArrayCallback>())
|
||||
{
|
||||
var typeIdArrayDict = new Dictionary<int, string>();
|
||||
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<PostInspectArrayCallback>())
|
||||
// {
|
||||
// var typeIdArrayDict = new Dictionary<int, string>();
|
||||
// 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)
|
||||
{
|
||||
|
@ -15,7 +15,7 @@ namespace CryptoExchange.Net.Objects.Sockets
|
||||
public Func<WebSocketMessageType, Stream, Stream>? PreProcessCallback { get; set; }
|
||||
public List<PreInspectCallback> PreInspectCallbacks { get; set; } = new List<PreInspectCallback>();
|
||||
public Func<IMessageAccessor, string?> GetIdentity { get; set; }
|
||||
public List<object> PostInspectCallbacks { get; set; } = new List<object>();
|
||||
//public List<object> PostInspectCallbacks { get; set; } = new List<object>();
|
||||
public Func<JToken, Type, BaseParsedMessage> ObjectInitializer { get; set; } = SocketConverter.InstantiateMessageObject;
|
||||
}
|
||||
|
||||
|
@ -308,6 +308,7 @@ namespace CryptoExchange.Net.Sockets
|
||||
/// Handle a message
|
||||
/// </summary>
|
||||
/// <param name="stream"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
protected virtual async Task HandleStreamMessage(WebSocketMessageType type, Stream stream)
|
||||
{
|
||||
@ -439,6 +440,10 @@ namespace CryptoExchange.Net.Sockets
|
||||
_socket.Dispose();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Whether or not a new subscription can be added to this connection
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool CanAddSubscription() => Status == SocketStatus.None || Status == SocketStatus.Connected;
|
||||
|
||||
/// <summary>
|
||||
|
Loading…
x
Reference in New Issue
Block a user