/// <summary> /// Constructor /// </summary> /// <param name="filterFactory">Filter factory that creates object to evaluate</param> /// <param name="conduit">Conduit instance</param> public Conduit(IConduitFilterFactory <TFilter> filterFactory, ConduitHub conduit, ILogger <Conduit <TFilter> > logger) { FilterFactory = filterFactory; _conduit = conduit; _logger = logger; var eventKey = typeof(TFilter).Name; _logger.LogInformation($"Registering Filter for {eventKey}"); _conduit.FilterActions.Add(eventKey, (dynamic, connectionId) => { var mappedFilter = Mapper <TFilter> .Map(dynamic) as TFilter; if (_logger.IsEnabled(LogLevel.Trace)) { _logger.LogTrace($"registering filter for {JsonSerializer.Serialize(mappedFilter)}"); } var pair = new ConnectionFilterPair(connectionId, mappedFilter); var current = ConnectionFilterMap.AddOrUpdate(connectionId, pair, (x, y) => pair); _logger.LogDebug($"Mapped connection ({current.ConnectionId}) with filter [{current.Filter}]"); }); }
/// <summary> /// Constructor /// </summary> /// <param name="filterFactory">Filter factory that creates object to evaluate</param> /// <param name="conduit">Conduit instance</param> public Conduit(IConduitFilterFactory <TFilter> filterFactory, ConduitHub conduit, ILogger <Conduit <TFilter> > logger) { FilterFactory = filterFactory; _conduit = conduit; _logger = logger; }