1
0
mirror of https://github.com/JKorf/CryptoExchange.Net synced 2026-02-16 14:13:46 +00:00
This commit is contained in:
Jkorf 2025-12-03 16:27:10 +01:00
parent ac73fd350b
commit 2b1d10fe02
2 changed files with 25 additions and 2 deletions

View File

@ -2,6 +2,7 @@
using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Sockets;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -91,6 +92,28 @@ namespace CryptoExchange.Net.Sockets
return new MessageRouter(routes.ToArray());
}
/// <summary>
/// Create message matcher
/// </summary>
public static MessageRouter CreateWithOptionalTopicFilters<T>(IEnumerable<string> typeIdentifiers, IEnumerable<string>? topicFilters, Func<SocketConnection, DateTime, string?, T, CallResult> handler)
{
var routes = new List<MessageRoute>();
foreach (var typeIdentifier in typeIdentifiers)
{
if (topicFilters?.Count() > 0)
{
foreach (var filter in topicFilters)
routes.Add(new MessageRoute<T>(typeIdentifier, filter, handler));
}
else
{
routes.Add(new MessageRoute<T>(typeIdentifier, null, handler));
}
}
return new MessageRouter(routes.ToArray());
}
/// <summary>
/// Create message matcher
/// </summary>

View File

@ -635,10 +635,10 @@ namespace CryptoExchange.Net.Sockets
var subscription = _listeners[i];
foreach (var route in subscription.MessageRouter.Routes)
{
if (route.DeserializationType != deserializationType)
if (route.TypeIdentifier != typeIdentifier)
continue;
if (topicFilter == null || route.TopicFilter == null || route.TopicFilter.Contains(topicFilter))
if (topicFilter == null || route.TopicFilter == null || route.TopicFilter.Equals(topicFilter, StringComparison.Ordinal))
{
processed = true;
subscription.Handle(this, receiveTime, originalData, result, route);