コード例 #1
0
 public BootstrapService(IRuleEvaluationRequestsConsumer consumer, IRuleEvaluationRequestsProducer producer, Func <RuleServiceInstance> ruleServiceInstanceFactory, PerformanceMetricsCollector performanceMetricsCollector)
 {
     this._consumer = consumer;
     this._producer = producer;
     this._ruleServiceInstanceFactory = ruleServiceInstanceFactory;
     this._cancellationTokenSource    = new CancellationTokenSource();
     this._consumer.CancelToken       = this._cancellationTokenSource.Token;
     this._producer.CancelToken       = this._cancellationTokenSource.Token;
     _metricsCollector = performanceMetricsCollector;
 }
 public RuleEvaluationRequestsDatabaseProducer(IEvaluationRequestsService evaluationRequestsService, BlockingCollection <RuleEvaluationRequest> workQueue, Func <IEvaluationRequestsService> evaluationRequestsServiceFactory /*, ILoggerFactory loggerFactory*/, WorkQueueCounter counter, PerformanceMetricsCollector performanceMetricsCollector)
 {
     //_logger = loggerFactory.GetLogger("RuleEngine_WindowsService");
     //_context = new TrmrLogContext("RuleEngine_WindowsService");
     this._workQueue = workQueue;
     this._evaluationRequestsServiceFactory = evaluationRequestsServiceFactory;
     this._counter     = counter;
     _metricsCollector = performanceMetricsCollector;
     InitializeCapacityThresholds();
 }
コード例 #3
0
        private void addBindings(IUnityContainer container)
        {
            configureNHibernate(container);

            container.RegisterType <IRepository, NHibernateSimpleRepository>(new PerThreadLifetimeManager());
            container.RegisterType(typeof(IRuleLogicExecutionService <>), typeof(RuleLogicExecutionService <>), new TransientLifetimeManager());
            container.RegisterType(typeof(IRuleQueryExecuter <>), typeof(RuleQueryExecuter <>), new TransientLifetimeManager());
            container.RegisterType(typeof(ICache <,>), typeof(MultipleStopwatchCache <,>), "MultipleStopwatchCache", new ContainerControlledLifetimeManager());
            container.RegisterType(typeof(ICache <,>), typeof(SingleStopwatchCache <,>), "SingleStopwatchCache", new ContainerControlledLifetimeManager());
            container.RegisterType <IRuleExecutionElementFactory <EFileDocument>, EFileCERuleExecutionElementFactory>(new TransientLifetimeManager());
            container.RegisterType <Func <FieldService> >(new InjectionFactory(_container => new Func <FieldService>(() => _container.Resolve <FieldService>())));
            container.RegisterType <Func <RuleService> >(new InjectionFactory(_container => new Func <RuleService>(() => _container.Resolve <RuleService>())));
            container.RegisterType <IRuleEvaluationRequestsConsumer, RuleEvaluationRequestsConsumer>(new TransientLifetimeManager());
            container.RegisterType <IRuleEvaluationRequestsProducer, RuleEvaluationRequestsDatabaseProducer>(new TransientLifetimeManager());
            container.RegisterType <IEvaluationRequestsService, EvaluationRequestDBService>();
            container.RegisterType <IValuesDictionary, ValuesDictionary>(new PerThreadLifetimeManager());
            container.RegisterType <Func <IEvaluationRequestsService> >(
                new InjectionFactory(c =>
                                     new Func <IEvaluationRequestsService>(() => c.Resolve <IEvaluationRequestsService>())
                                     ));
            container.RegisterType <Func <RuleServiceInstance> >(
                new InjectionFactory(c =>
                                     new Func <RuleServiceInstance>(() => c.Resolve <RuleServiceInstance>())
                                     ));
            container.RegisterType <Func <IRuleLogicExecutionService <EFileDocument> > >(
                new InjectionFactory(c =>
                                     new Func <IRuleLogicExecutionService <EFileDocument> >(() => c.Resolve <IRuleLogicExecutionService <EFileDocument> >())
                                     ));
            container.RegisterType <Func <IValuesDictionary> >(
                new InjectionFactory(c =>
                                     new Func <IValuesDictionary>(() => c.Resolve <IValuesDictionary>())
                                     ));

            container.RegisterType <ConcurrentDictionary <Tuple <string, string, string, string>, Stopwatch> >(new ContainerControlledLifetimeManager());
            //container.RegisterType<Common.Logging.ILoggerFactory, Common.Logging.Log4NetLoggerFactory>();
            int queueSize = int.Parse(ConfigurationManager.AppSettings["MaxQueueSize"]);
            BlockingCollection <RuleEvaluationRequest> blockingCollection = new BlockingCollection <RuleEvaluationRequest>(queueSize);

            container.RegisterInstance <BlockingCollection <RuleEvaluationRequest> >(blockingCollection);
            WorkQueueCounter counter = new WorkQueueCounter();

            container.RegisterInstance <WorkQueueCounter>(counter);
            PerformanceMetricsCollector _PerformanceMetricsCollector = new PerformanceMetricsCollector();

            container.RegisterInstance <PerformanceMetricsCollector>(_PerformanceMetricsCollector);
            Processor processor = new Processor();

            container.RegisterInstance <Processor>(processor);
            ILockProvider lockProvider = new LockProvider();

            container.RegisterInstance <ILockProvider>(lockProvider);
        }