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(); }
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); }
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); }
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); }
public RouteController(IRouteProcessor routeProcessor) { _routeProcessor = routeProcessor; }