示例#1
0
 /// <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);
     }
 }
示例#2
0
        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}]");
            });
        }
示例#3
0
        /// <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}]");
            });
        }