public static void Initialize() { ThemeListener.ThemeChanged += ThemeListener_ThemeChanged; DebugListener.OnProjectDebuggingStart += DebugListener_OnProjectDebugging; Clear(); Server = new PipeHTMLServer($"VisualDump-{System.Diagnostics.Process.GetCurrentProcess().Id}-{DateTimeOffset.UtcNow.ToUnixTimeSeconds()}"); Server.OnDataReceived += Server_HTMLReceived; Server.BeginRead(); }
/// <summary> /// Repeatable part of the program setup. Note that the threads and database must first be disposed or null. /// </summary> static void Setup() { // Dispose existing database connections Utils.DisposeDatabases(); #region Apply AppSettings dynamic appSettings = Config["appSettings"]; // Create log files in release mode only if (!DEBUG) { Log.Config("Creating log file"); string log = appSettings.logDir; // Create the directory if it doesn't exist try { if (!Directory.Exists(log)) { Directory.CreateDirectory(log); } } catch (Exception e) { Log.Fatal($"{e.GetType().Name}: {e.Message}", e, false); Terminate(14001); } log += "/latest.log"; // Delete the file if it already exists if (File.Exists(log)) { File.Delete(log); } Log.OutputStreams.Add(File.CreateText(log)); } #endregion Log.Config("Creating database connection..."); Database = Utils.GetDatabase(); try { // Compile razor .cshtml templates Templates.CompileAll(); } catch (Exception e) { // Print any error and terminate Log.Fatal("Template compilation failed:"); Log.Fatal($"{e.GetType().Name}: {e.Message}", e); Terminate(1); } #region Setup Threads dynamic performance = Config["performance"]; for (int i = 0; i < (int)performance.apiThreads; i++) { var server = new JsonServer(JSONQueue); Servers.Add(server); server.Start(); } for (int i = 0; i < (int)performance.htmlThreads; i++) { var server = new HTMLServer(listener.Queue); Servers.Add(server); server.Start(); } for (int i = 0; i < (int)performance.resourceThreads; i++) { var server = new ResourceServer(ResourceQueue); Servers.Add(server); server.Start(); } #endregion }