示例#1
0
 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();
 }
示例#2
0
        /// <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
        }