예제 #1
0
파일: Conduit.cs 프로젝트: mahichr/Conduit
        /// <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}]");
            });
        }
예제 #2
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;
 }