internal static bool Initialize() { try { Journal = new EventJournal(); Journal.Open(Settings.Default.DisableLogDB ? String.Empty : Settings.Default.LogsDatabasePath, Settings.Default.DBOptionsLogs, String.Format(Settings.Default.LogsTracePathTemplate, DateTime.Now.ToString(CultureInfo.CurrentCulture).Replace('/', '_').Replace(':', '_')), Settings.Default.ForceLogFlush, Settings.Default.IncludeDetailsInLog); Journal.AppendLog(ComplexParts.Service, LogMessageType.Info, Resources.Log_SystemHost_Application_started); } catch (Exception ex) { File.AppendAllText(@"SCME.Service error.txt", $"\n\n{DateTime.Now}\nEXCEPTION: {ex}\nINNER EXCEPTION: {ex.InnerException ?? new Exception("No additional information - InnerException is null")}\n"); return(false); } // try // { // SQLiteDatabaseService dbForMigration = new SQLiteDatabaseService(Settings.Default.ResultsDatabasePath); // dbForMigration.Open(); // dbForMigration.Migrate(); // dbForMigration.Close(); // } // catch (Exception ex) // { // Journal.AppendLog(ComplexParts.Service, LogMessageType.Warning, String.Format("Migrate database error: {0}", ex.Message)); // return false; // } try { Results = new ResultsJournal(); ///?? //Results.Open(Settings.Default.DisableResultDB ? String.Empty : Settings.Default.ResultsDatabasePath, Settings.Default.DBOptionsResults, Settings.Default.MMECode); Results.Open(Settings.Default.ResultsDatabasePath, Settings.Default.DBOptionsResults, Settings.Default.MMECode); if (!Settings.Default.IsLocal) { Journal.AppendLog(ComplexParts.Service, LogMessageType.Info, Resources.Log_SystemHost_Result_journal_opened); } //нам ещё не известно как завершится процесс синхронизации данных, поэтому IsSyncedWithServer = null; // switch (Settings.Default.IsLocal) // { // case true: // //синхронизация отключена, уведомляем UI, что стадия синхронизации баз данных пройдена // AfterSyncWithServerRoutineHandler("Synchronization of the local database with a central database is prohibited by parameter DisableResultDB"); // break; // // default: // //запускаем в потоке синхронизацию результатов измерений и профилей // Results.SyncWithServer(AfterSyncWithServerRoutineHandler); // break; // } try { ms_ControlService = new ExternalControlServer(); ms_ControlServiceHost = new ServiceHost(ms_ControlService); ms_ControlServiceHost.Open(); Journal.AppendLog(ComplexParts.Service, LogMessageType.Info, String.Format(Resources.Log_SystemHost_Control_service_is_listening)); ms_DatabaseServiceHost = new ServiceHost(typeof(DatabaseServer)); HostDbService(); } catch (Exception ex) { File.AppendAllText(@"SCME.Service error.txt", $"\n\n{DateTime.Now}\nEXCEPTION: {ex}\nINNER EXCEPTION: {ex.InnerException ?? new Exception("No additional information - InnerException is null")}\n"); Journal.AppendLog(ComplexParts.Service, LogMessageType.Warning, $"SQLite database error: {ex?.InnerException?.ToString() ?? ex.ToString()}"); return(false); } try { ms_DatabaseServiceHost.AddServiceEndpoint(typeof(IDatabaseCommunicationService), new NetTcpBinding("DefaultTcpBinding"), Settings.Default.DBServiceExternalEndpoint); } catch (Exception ex) { Journal.AppendLog(ComplexParts.Service, LogMessageType.Warning, String.Format("Can't open external database service port: {0}", ex.Message)); } ms_DatabaseServiceHost.Open(); Journal.AppendLog(ComplexParts.Service, LogMessageType.Info, String.Format(Resources.Log_SystemHost_Database_service_is_listening)); ms_MaintenanceServiceHost = new ServiceHost(typeof(MaintenanceServer)); try { ms_MaintenanceServiceHost.AddServiceEndpoint(typeof(IDatabaseMaintenanceService), new NetTcpBinding("DefaultTcpBinding"), Settings.Default.MaintenanceServiceExternalEndpoint); } catch (Exception ex) { Journal.AppendLog(ComplexParts.Service, LogMessageType.Warning, String.Format("Can't open external maintenance service port: {0}", ex.Message)); } ms_MaintenanceServiceHost.Open(); Journal.AppendLog(ComplexParts.Service, LogMessageType.Info, String.Format(Resources.Log_SystemHost_Maintenance_service_is_listening)); return(true); } catch (Exception ex) { File.AppendAllText(@"SCME.Service error.txt", $"\n\n{DateTime.Now}\nEXCEPTION: {ex}\nINNER EXCEPTION: {ex.InnerException ?? new Exception("No additional information - InnerException is null")}\n"); Journal.AppendLog(ComplexParts.Service, LogMessageType.Error, ex.Message); Journal.Close(); return(false); } }
public static void stop() { eventJournal.Close(); }