/// <summary> /// OnConnected handler /// </summary> /// <param name="context">The connection context</param> public void OnConnectedAsync(HubCallerContext context) { if (FilterFactory != null) { var filter = FilterFactory.Build(context); var pair = new ConnectionFilterPair(context.ConnectionId, filter ?? new TFilter()); ConnectionFilterMap.TryAdd(context.ConnectionId, pair); } }
public void Initialize(Dictionary <string, Action <dynamic, string> > filterActions) { var eventKey = typeof(TFilter).Name; _logger.LogInformation($"Registering Filter for {eventKey}"); 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; 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}]"); }); }