示例#1
0
        public void Start(string[] commandLineArgs)
        {
            Log4NetConfig.Setup();
            var banner = new StringBuilder();

            banner.AppendLine(@" ______               __          __                                     ");
            banner.AppendLine(@"|   __ \.-----.-----.|  |_.-----.|  |_.----.---.-.-----.-----.-----.----.");
            banner.AppendLine(@"|   __ <|  _  |  _  ||   _|__ --||   _|   _|  _  |  _  |  _  |  -__|   _|");
            banner.AppendLine(@"|______/|_____|_____||____|_____||____|__| |___._|   __|   __|_____|__|  ");
            banner.AppendLine(@"                                                 |__|  |__|              ");
            banner.AppendLine(@"    ");
            var logging = new LoggingOrchestrator();

            logging.InitializeLogging <Log4NetLog>("Main", banner.ToString());

            GlobalExceptionHandlers.WireUp();

            System.Console.OutputEncoding = Encoding.UTF8;

            var environment = new EnvironmentFacade(Assembly.GetExecutingAssembly());

            var appSettings = ConfigurationParser.Parse(commandLineArgs, ConfigurationManager.AppSettings);

            logging.LogUsefulInformation(environment, appSettings);

            var container = InitializeContainer(appSettings);

            _disposableBag.Add(container);

            this.Log().Debug($"Finished bootstrapping {environment.GetProductName()}.");

            // Kick off long running services
            var orchestrator = container.Resolve <LongRunningServiceOrchestrator>();

            orchestrator.StartLongRunningServices()
            .ContinueWith(_ =>
            {
                this.Log().Info($"All long running services are started.");

                // This code will listen to console key presses and execute the code
                // associated with it
                if (Environment.UserInteractive)
                {
                    this.Log().Debug($"Interactive console mode detected.");
                    var commandProcessor = container.Resolve <ConsoleCommandOrchestrator>();
                    commandProcessor.StartUp();
                }
            });
        }
示例#2
0
 static void Main(string[] args)
 {
     HostFactory.Run(cfg =>
     {
         cfg.Service <Bootstrapper>(s =>
         {
             s.ConstructUsing(() => new Bootstrapper());
             s.WhenStarted(x => x.Start(args));
             s.WhenStopped(x => x.Stop());
         });
         cfg.OnException(ex => GlobalExceptionHandlers.OnException(ex, "Windows service"));
         cfg.SetServiceName("bootstrapping-topshelf");
         cfg.SetDescription("Example Bootstrapping TopShelf App");
     });
 }
示例#3
0
        public static void Start(StartupContext startupContext, IUserAlert userAlert, Action <IContainer> startCallback = null)
        {
            LogTargets.Register(startupContext, false, true);

            try
            {
                GlobalExceptionHandlers.Register();
                IgnoreCertErrorPolicy.Register();

                Logger.Info("Starting NzbDrone - {0} - Version {1}", Assembly.GetCallingAssembly().Location, Assembly.GetExecutingAssembly().GetName().Version);

                if (!PlatformValidation.IsValidate(userAlert))
                {
                    throw new TerminateApplicationException("Missing system requirements");
                }

                _container = MainAppContainerBuilder.BuildContainer(startupContext);
                _container.Resolve <IAppFolderFactory>().Register();
                _container.Resolve <IProvidePidFile>().Write();

                var appMode = GetApplicationMode(startupContext);

                Start(appMode, startupContext);

                if (startCallback != null)
                {
                    startCallback(_container);
                }

                else
                {
                    SpinToExit(appMode);
                }
            }
            catch (TerminateApplicationException e)
            {
                Logger.Info(e.Message);
                LogManager.Configuration = null;
            }
        }
示例#4
0
        public static IContainer Start(StartupArguments args, IUserAlert userAlert)
        {
            var logger = NzbDroneLogger.GetLogger();

            GlobalExceptionHandlers.Register();
            IgnoreCertErrorPolicy.Register();

            logger.Info("Starting NzbDrone Console. Version {0}", Assembly.GetExecutingAssembly().GetName().Version);


            if (!PlatformValidation.IsValidate(userAlert))
            {
                throw new TerminateApplicationException();
            }

            var container = MainAppContainerBuilder.BuildContainer(args);

            DbFactory.RegisterDatabase(container);
            container.Resolve <Router>().Route();

            return(container);
        }
示例#5
0
        public static void Main(string[] args)
        {
            try
            {
                var startupArgument = new StartupContext(args);
                LogTargets.Register(startupArgument, true, true);

                Console.WriteLine("Starting NzbDrone Update Client");

                IgnoreCertErrorPolicy.Register();

                GlobalExceptionHandlers.Register();

                _container = UpdateContainerBuilder.Build(startupArgument);

                logger.Info("Updating NzbDrone to version {0}", BuildInfo.Version);
                _container.Resolve <UpdateApp>().Start(args);
            }
            catch (Exception e)
            {
                logger.FatalException("An error has occurred while applying update package.", e);
            }
        }