mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2025-06-08 00:16:27 +00:00
wip
This commit is contained in:
parent
b640690a0f
commit
12d5783625
@ -87,67 +87,72 @@ namespace CryptoExchange.Net.Converters
|
|||||||
return idInstance;
|
return idInstance;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Message not identified
|
||||||
|
// TODO return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PostInspectResult? inspectResult = null;
|
PostInspectResult? inspectResult = null;
|
||||||
object? usedParser = null;
|
object? usedParser = null;
|
||||||
if (token.Type == JTokenType.Object)
|
//if (token.Type == JTokenType.Object)
|
||||||
{
|
//{
|
||||||
foreach (var callback in InterpreterPipeline.PostInspectCallbacks.OfType<PostInspectCallback>())
|
// foreach (var callback in InterpreterPipeline.PostInspectCallbacks.OfType<PostInspectCallback>())
|
||||||
{
|
// {
|
||||||
bool allFieldsPresent = true;
|
// bool allFieldsPresent = true;
|
||||||
foreach (var field in callback.TypeFields)
|
// foreach (var field in callback.TypeFields)
|
||||||
{
|
// {
|
||||||
var value = accessor.GetStringValue(field.Key);
|
// var value = accessor.GetStringValue(field.Key);
|
||||||
if (value == null)
|
// if (value == null)
|
||||||
{
|
// {
|
||||||
if (field.Required)
|
// if (field.Required)
|
||||||
{
|
// {
|
||||||
allFieldsPresent = false;
|
// allFieldsPresent = false;
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (allFieldsPresent)
|
// if (allFieldsPresent)
|
||||||
{
|
// {
|
||||||
inspectResult = callback.Callback(accessor, processors);
|
// inspectResult = callback.Callback(accessor, processors);
|
||||||
usedParser = callback;
|
// usedParser = callback;
|
||||||
if (inspectResult.Type != null)
|
// if (inspectResult.Type != null)
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
else
|
//else
|
||||||
{
|
//{
|
||||||
foreach (var callback in InterpreterPipeline.PostInspectCallbacks.OfType<PostInspectArrayCallback>())
|
// foreach (var callback in InterpreterPipeline.PostInspectCallbacks.OfType<PostInspectArrayCallback>())
|
||||||
{
|
// {
|
||||||
var typeIdArrayDict = new Dictionary<int, string>();
|
// var typeIdArrayDict = new Dictionary<int, string>();
|
||||||
bool allFieldsPresent = true;
|
// bool allFieldsPresent = true;
|
||||||
var maxIndex = callback.TypeFields.Max();
|
// var maxIndex = callback.TypeFields.Max();
|
||||||
if (((JArray)token).Count <= maxIndex)
|
// if (((JArray)token).Count <= maxIndex)
|
||||||
continue;
|
// continue;
|
||||||
|
|
||||||
foreach (var field in callback.TypeFields)
|
// foreach (var field in callback.TypeFields)
|
||||||
{
|
// {
|
||||||
var value = token[field];
|
// var value = token[field];
|
||||||
if (value == null)
|
// if (value == null)
|
||||||
{
|
// {
|
||||||
allFieldsPresent = false;
|
// allFieldsPresent = false;
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
|
|
||||||
typeIdArrayDict[field] = value.ToString();
|
// typeIdArrayDict[field] = value.ToString();
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (allFieldsPresent)
|
// if (allFieldsPresent)
|
||||||
{
|
// {
|
||||||
inspectResult = callback.Callback(typeIdArrayDict, processors);
|
// inspectResult = callback.Callback(typeIdArrayDict, processors);
|
||||||
usedParser = callback;
|
// usedParser = callback;
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
if (usedParser == null)
|
if (usedParser == null)
|
||||||
{
|
{
|
||||||
|
@ -15,7 +15,7 @@ namespace CryptoExchange.Net.Objects.Sockets
|
|||||||
public Func<WebSocketMessageType, Stream, Stream>? PreProcessCallback { get; set; }
|
public Func<WebSocketMessageType, Stream, Stream>? PreProcessCallback { get; set; }
|
||||||
public List<PreInspectCallback> PreInspectCallbacks { get; set; } = new List<PreInspectCallback>();
|
public List<PreInspectCallback> PreInspectCallbacks { get; set; } = new List<PreInspectCallback>();
|
||||||
public Func<IMessageAccessor, string?> GetIdentity { get; set; }
|
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;
|
public Func<JToken, Type, BaseParsedMessage> ObjectInitializer { get; set; } = SocketConverter.InstantiateMessageObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -308,6 +308,7 @@ namespace CryptoExchange.Net.Sockets
|
|||||||
/// Handle a message
|
/// Handle a message
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="stream"></param>
|
/// <param name="stream"></param>
|
||||||
|
/// <param name="type"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
protected virtual async Task HandleStreamMessage(WebSocketMessageType type, Stream stream)
|
protected virtual async Task HandleStreamMessage(WebSocketMessageType type, Stream stream)
|
||||||
{
|
{
|
||||||
@ -439,6 +440,10 @@ namespace CryptoExchange.Net.Sockets
|
|||||||
_socket.Dispose();
|
_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;
|
public bool CanAddSubscription() => Status == SocketStatus.None || Status == SocketStatus.Connected;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user