Exemple #1
0
        public RouteApp(
            AppConfig config,
            IHostApplicationLifetime lifetime,
            IIndex <string, IConfigurationUpdater> configUpdaters,
            IIndex <ImportType, IImporter> importers,
            IIndex <ExportType, IExporter> exporters,
            IIndex <ProcessorType, IRouteProcessor> snapProcessors,
            IJ4JLogger logger
            )
        {
            _config    = config;
            _lifetime  = lifetime;
            _importers = importers;

            _exporter = exporters[config.ExportType];

            _distProc = snapProcessors[ProcessorType.Distance];
            _distProc.PointsProcessed += PointsProcessedHandler;

            _logger = logger;
            _logger.SetLoggedType(GetType());

            if (configUpdaters.TryGetValue(AutofacKey, out var updater) &&
                updater.Update(_config))
            {
                _routeProc = snapProcessors[config.ProcessorType];
                _routeProc.PointsProcessed += PointsProcessedHandler;

                return;
            }

            _logger.Fatal("Incomplete configuration, aborting");
            _lifetime.StopApplication();
        }
Exemple #2
0
        public void AddProcessor(IRouteProcessor processor)
        {
            _processors.Add(processor);

            Observable
                .FromEvent<EventArgs<IRoute>>(this, "RouteEvent")
                .Select(args => args.EventArgs.Value)
                .Where(processor.CanProcess)
                .Subscribe(s => OnNext(s, processor), _exceptionAction);
        }
Exemple #3
0
        void OnNext(IRoute route, IRouteProcessor processor)
        {
            if (route.IsEnd())
                return;

            route.Start = DateTime.Now.Ticks;
            var result = processor.Process(route);
            route.End = DateTime.Now.Ticks;

            Process(result);
        }
Exemple #4
0
        private async Task <bool> RunRouteProcessor(PointSet pointSet, IRouteProcessor processor,
                                                    CancellationToken cancellationToken)
        {
            var routePts = await processor.ProcessAsync(pointSet.Points, cancellationToken);

            if (routePts == null)
            {
                _logger.Error("Route processor '{0}' failed", processor.GetType());
                return(false);
            }

            pointSet.Points = routePts;

            return(true);
        }
Exemple #5
0
 public RouteController(IRouteProcessor routeProcessor)
 {
     _routeProcessor = routeProcessor;
 }