/// <summary> /// The command line to run it is "evaluator.exe evaluator.config" /// </summary> /// <param name="args"></param> public static void Main(string[] args) { DefaultUnhandledExceptionHandler.Register(); if (args.Count() != 1) { var e = new InvalidOperationException("Must supply only the evaluator.config file!"); Utilities.Diagnostics.Exceptions.Throw(e, logger); } if (IsDebuggingEnabled()) { AttachDebugger(); } var fullEvaluatorConfiguration = ReadEvaluatorConfiguration(args[0]); var injector = TangFactory.GetTang().NewInjector(fullEvaluatorConfiguration); var serializer = injector.GetInstance <AvroConfigurationSerializer>(); var rootEvaluatorConfiguration = TangFactory.GetTang().NewConfigurationBuilder(serializer.FromString(injector.GetNamedInstance <EvaluatorConfiguration, string>())) .BindSetEntry <RuntimeStartHandler, EvaluatorRuntime, IObserver <RuntimeStart> >() .BindSetEntry <RuntimeStopHandler, EvaluatorRuntime, IObserver <RuntimeStop> >() .Build(); logger.Log(Level.Info, "Creating the Evaluator instance"); var evaluator = injector.ForkInjector(rootEvaluatorConfiguration).GetInstance <Evaluator>(); evaluator.Run(); logger.Log(Level.Info, "Evaluator is returned from Run()"); }
public EvaluatorRuntime( ContextManager contextManager, IHeartBeatManager heartBeatManager, PIDStoreHandler pidStoreHelper, EvaluatorExitLogger evaluatorExitLogger) { using (Logger.LogFunction("EvaluatorRuntime::EvaluatorRuntime")) { _heartBeatManager = heartBeatManager; _clock = _heartBeatManager.EvaluatorSettings.RuntimeClock; _contextManager = contextManager; _evaluatorId = _heartBeatManager.EvaluatorSettings.EvalutorId; _pidStoreHelper = pidStoreHelper; _evaluatorExitLogger = evaluatorExitLogger; var remoteManager = _heartBeatManager.EvaluatorSettings.RemoteManager; ReefMessageProtoObserver driverObserver = new ReefMessageProtoObserver(); // subscribe to driver proto message driverObserver.Subscribe(o => OnNext(o.Message)); // register the driver observer _evaluatorControlChannel = remoteManager.RegisterObserver(driverObserver); AppDomain.CurrentDomain.UnhandledException += EvaluatorRuntimeUnhandledException; DefaultUnhandledExceptionHandler.Unregister(); // start the heart beat _clock.ScheduleAlarm(0, _heartBeatManager); } }
/// <summary> /// Initialize methods to be called /// </summary> public void Init() { //check mandatory application setting values. PreInit(); // Set the unhandled exception mode to force all Windows Forms errors Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException); // Add the event handler for handling non-UI thread exceptions to the event. Thread.GetDomain().UnhandledException += new UnhandledExceptionEventHandler( DefaultUnhandledExceptionHandler.GetInstance().HandleException); }
public static void Main(string[] args) { CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU"); Application.Init(); QSMain.GuiThread = System.Threading.Thread.CurrentThread; applicationInfo = new ApplicationVersionInfo(); #region Первоначальная настройка обработки ошибок SingletonErrorReporter.Initialize(ReportWorker.GetReportService(), applicationInfo, new LogService(), null, false, null); var errorMessageModelFactoryWithoutUserService = new DefaultErrorMessageModelFactory(SingletonErrorReporter.Instance, null, null); var exceptionHandler = new DefaultUnhandledExceptionHandler(errorMessageModelFactoryWithoutUserService, applicationInfo); exceptionHandler.SubscribeToUnhandledExceptions(); exceptionHandler.GuiThread = System.Threading.Thread.CurrentThread; #endregion //FIXME Удалить после того как будет удалена зависимость от библиотеки QSProjectLib QSMain.ProjectPermission = new System.Collections.Generic.Dictionary <string, UserPermission>(); CreateProjectParam(); ConfigureViewModelWidgetResolver(); ConfigureJournalColumnsConfigs(); QSMain.SetupFromArgs(args); QS.Project.Search.GtkUI.SearchView.QueryDelay = 1500; Gtk.Settings.Default.SetLongProperty("gtk-button-images", 1, ""); // Создаем окно входа Login LoginDialog = new Login(); LoginDialog.Logo = Gdk.Pixbuf.LoadFromResource("Vodovoz.icons.logo.png"); LoginDialog.SetDefaultNames("Vodovoz"); LoginDialog.DefaultLogin = "******"; LoginDialog.DefaultServer = "sql.vod.qsolution.ru"; LoginDialog.UpdateFromGConf(); ResponseType LoginResult; LoginResult = (ResponseType)LoginDialog.Run(); if (LoginResult == ResponseType.DeleteEvent || LoginResult == ResponseType.Cancel) { return; } LoginDialog.Destroy(); PerformanceHelper.StartMeasurement("Замер запуска приложения"); GetPermissionsSettings(); //Настройка базы CreateBaseConfig(); PerformanceHelper.AddTimePoint(logger, "Закончена настройка базы"); VodovozGtkServicesConfig.CreateVodovozDefaultServices(); ParametersProvider.Instance.RefreshParameters(); #region Настройка обработки ошибок c параметрами из базы и сервисами var baseParameters = new BaseParametersProvider(); SingletonErrorReporter.Initialize( ReportWorker.GetReportService(), applicationInfo, new LogService(), LoginDialog.BaseName, LoginDialog.BaseName == baseParameters.GetDefaultBaseForErrorSend(), baseParameters.GetRowCountForErrorLog() ); var errorMessageModelFactoryWithUserService = new DefaultErrorMessageModelFactory(SingletonErrorReporter.Instance, ServicesConfig.UserService, UnitOfWorkFactory.GetDefaultFactory); exceptionHandler.InteractiveService = ServicesConfig.InteractiveService; exceptionHandler.ErrorMessageModelFactory = errorMessageModelFactoryWithUserService; //Настройка обычных обработчиков ошибок. exceptionHandler.CustomErrorHandlers.Add(CommonErrorHandlers.MySqlException1055OnlyFullGroupBy); exceptionHandler.CustomErrorHandlers.Add(CommonErrorHandlers.MySqlException1366IncorrectStringValue); exceptionHandler.CustomErrorHandlers.Add(CommonErrorHandlers.NHibernateFlushAfterException); exceptionHandler.CustomErrorHandlers.Add(ErrorHandlers.NHibernateStaleObjectStateExceptionHandler); exceptionHandler.CustomErrorHandlers.Add(ErrorHandlers.MySqlExceptionConnectionTimeoutHandler); exceptionHandler.CustomErrorHandlers.Add(ErrorHandlers.MySqlExceptionAuthHandler); #endregion //Настройка карты GMapProvider.UserAgent = String.Format("{0}/{1} used GMap.Net/{2} ({3})", applicationInfo.ProductName, applicationInfo.Version.VersionToShortString(), Assembly.GetAssembly(typeof(GMapProvider)).GetName().Version.VersionToShortString(), Environment.OSVersion.VersionString ); GMapProvider.Language = GMap.NET.LanguageType.Russian; PerformanceHelper.AddTimePoint(logger, "Закончена настройка карты."); DatePicker.CalendarFontSize = 16; DateRangePicker.CalendarFontSize = 16; OsmWorker.ServiceHost = "osm.vod.qsolution.ru"; OsmWorker.ServicePort = 7073; QS.Osm.Osrm.OsrmMain.ServerUrl = "http://osrm.vod.qsolution.ru:5000"; PerformanceHelper.StartPointsGroup("Главное окно"); var baseVersionChecker = new CheckBaseVersion(applicationInfo, new ParametersService(QS.Project.DB.Connection.ConnectionDB)); if (baseVersionChecker.Check()) { ServicesConfig.CommonServices.InteractiveService.ShowMessage(ImportanceLevel.Warning, baseVersionChecker.TextMessage, "Несовпадение версии"); return; } QSMain.CheckServer(null); // Проверяем настройки сервера PerformanceHelper.AddTimePoint("Закончена загрузка параметров базы и проверка версии."); AutofacClassConfig(); PerformanceHelper.AddTimePoint("Закончена настройка AutoFac."); if (QSMain.User.Login == "root") { string Message = "Вы зашли в программу под администратором базы данных. У вас есть только возможность создавать других пользователей."; MessageDialog md = new MessageDialog(null, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok, Message); md.Run(); md.Destroy(); UsersDialog usersDlg = new UsersDialog(ServicesConfig.InteractiveService); usersDlg.Show(); usersDlg.Run(); usersDlg.Destroy(); return; } else { if (ChangePassword(LoginDialog.BaseName) && CanLogin()) { StartMainWindow(LoginDialog.BaseName); } else { return; } } PerformanceHelper.EndPointsGroup(); PerformanceHelper.AddTimePoint(logger, "Закончен старт SAAS. Конец загрузки."); QSSaaS.Session.StartSessionRefresh(); PerformanceHelper.AddTimePoint(logger, "Закончен старт SAAS. Конец загрузки."); PerformanceHelper.Main.PrintAllPoints(logger); Application.Run(); QSSaaS.Session.StopSessionRefresh(); ClearTempDir(); }