public IMiramarTaskProvider CreateTaskProvider(string path) { var publisher = new MiramarPublisher(); return(CreateTaskProvider(publisher, path)); }
public IMiramarScheduleProvider CreateScheduleProvider(string path) { var publisher = new MiramarPublisher(); return(CreateScheduleProvider(publisher, path)); }
static void Main(string[] args) { ObjectFactory.Initialize(x => { x.For <IScheduleMessageHandler>() .AddInstances(i => { i.Type <HandlerAddSchedule>(); i.Type <HandlerChangeLogging>(); i.Type <HandlerChangeSchedule>(); i.Type <HandlerPublishConfiguration>(); i.Type <HandlerPublishSchedule>(); i.Type <HandlerRemoveSchedule>(); i.Type <HandlerResumeSchedule>(); i.Type <HandlerStopTask>(); }); x.Scan(s => { s.AssembliesFromApplicationBaseDirectory(); s.AddAllTypesOf <IMiramarTaskFactory>(); }); }); var logger = InfrastructureFactory.CreateLogger("Console"); logger.Debug("Starting up console application."); if (args.Length != 0) { logger.Info("Waiting on debugger attach. Press any key to continue."); Console.ReadKey(); } var messageFactory = CreateMessageFactory(logger); if (!messageFactory.IsActive) { logger.InfoFormat("RabbitMQ is not active. Messaging will not be available."); } var source = new CancellationTokenSource(); var publisher = new MiramarPublisher(messageFactory); var contextProvider = new MiramarContextProvider(); var taskProvider = MiramarConfigurationParser.ParseConfiguration(publisher, "miramar.config"); var scheduleProvider = MiramarSchedulingParser.ParseSchedule(publisher, "miramar.config"); var controllerTask = new Task(() => { logger.Info("Starting Miramar Controller."); var controller = new MiramarController(publisher, taskProvider, scheduleProvider, contextProvider, true); controller.ThreadRun(source.Token); }); controllerTask.ContinueWith(x => logger.Info("Console application is shutting down.")); var schedulerTask = new Task(() => { logger.Info("Starting Miramar Scheduler."); var scheduler = new ScheduleService(messageFactory, taskProvider, scheduleProvider, contextProvider); scheduler.ThreadRun(source.Token); }); schedulerTask.ContinueWith(x => logger.Info("Scheduler application is shutting down.")); AddMiramarAdapter(messageFactory); controllerTask.Start(); schedulerTask.Start(); logger.Info("Miramar Controller is now running."); logger.Info("Miramar Scheduler is now running"); logger.Info("Press CTRL+C or 'Q' to stop."); Console.CancelKeyPress += (s, e) => { logger.Warn("CTRL+C detected. Attempting to quit."); CancelAndWait(source, messageFactory, controllerTask, schedulerTask); }; while (true) { var key = Console.ReadKey(); if (key.Key != ConsoleKey.Q) { continue; } logger.Warn("'Q' detected. Attempting to stop."); CancelAndWait(source, messageFactory, controllerTask, schedulerTask); break; } }