SetupStats() public method

public SetupStats ( ) : void
return void
Example #1
0
        public void Listen(string cachedir)
        {
            Environment.CurrentDirectory = cdto;
            Logging.Emit("creating direct cache server..");
            cache = new DirectCompilerCacheServer(cachedir);
            Logging.Emit("starting server threads..");

            while (serverThreads.Count < MaxServerThreads)
            {
                NewServerThread(cachedir);
            }

            // maintain the threadpool
            while (!quitnow)
            {
                foreach (var t in serverThreads.ToArray())
                {
                    if (busyThreads > 0)
                    {
                        Logging.Emit("{0} busy threads", busyThreads);
                    }
                    if (t.Join(1000))
                    {
                        serverThreads.Remove(t);
                        Logging.Emit("replacing thread");
                        NewServerThread(cachedir);
                    }
                }
                if (busyThreads < 1)
                {
                    Logging.Emit("server is idle..");
                }
                if (DateTime.Now.Subtract(lastRequest).TotalMinutes > QuitAfterIdleMinutes)
                {
                    quitnow = true;
                }
            }
            Logging.Emit("waiting for threads to finish");
            foreach (var t in serverThreads)
            {
                Logging.Emit("joining thread {0}", t.ManagedThreadId);
                if (!t.Join(2000))
                {
                    Logging.Emit("thread still running..");
                }
            }

            Logging.Emit("commiting stats");
            cache.SetupStats();
            Logging.Emit("server quitting");
            serverMutex.ReleaseMutex();
        }
Example #2
0
        public void Listen(string cachedir)
        {
            Environment.CurrentDirectory = cdto;
            Logging.Emit("creating direct cache server..");
            cache = new DirectCompilerCacheServer(cachedir);
            Logging.Emit("starting server threads..");

            while (serverThreads.Count < MaxServerThreads)
            {
                NewServerThread(cachedir);
            }

            // maintain the threadpool
            while (!quitnow)
            {
                foreach (var t in serverThreads.ToArray())
                {
                    if (busyThreads > 0)
                        Logging.Emit("{0} busy threads", busyThreads);
                    if (t.Join(1000))
                    {
                        serverThreads.Remove(t);
                        Logging.Emit("replacing thread");
                        NewServerThread(cachedir);
                    }
                }
                if (busyThreads < 1) {
                    Logging.Emit("server is idle..");
                }
                if (DateTime.Now.Subtract(lastRequest).TotalMinutes > QuitAfterIdleMinutes)
                {
                    quitnow = true;
                }
            }
            Logging.Emit("waiting for threads to finish");
            foreach (var t in serverThreads)
            {
                Logging.Emit("joining thread {0}", t.ManagedThreadId);
                if (!t.Join(2000)) {
                    Logging.Emit("thread still running..");
                }
            }

            Logging.Emit("commiting stats");
            cache.SetupStats();
            Logging.Emit("server quitting");
            serverMutex.ReleaseMutex();
        }
Example #3
0
        public CClashResponse ProcessRequest(CClashRequest req)
        {
            var rv = new CClashResponse()
            {
                supported = false
            };

            Logging.Emit("{0}", DateTime.Now.ToString("s"));
            Logging.Emit("server req: cmd = {0}, workdir = {1}",
                         req.cmd, req.workdir);

            switch (req.cmd)
            {
            case Command.GetStats:
                rv.exitcode = 0;
                cache.SetupStats();     // commits stats to disk
                rv.stdout = StatOutputs.GetStatsString(req.compiler, cache);
                break;

            case Command.DisableCache:
                DisableCaching = true;
                rv.supported   = true;
                break;

            case Command.ClearCache:
                DisableCaching = true;
                cache.SetupStats();
                cache.Lock(CacheLockType.ReadWrite);
                cache.OutputCache.ClearLocked();
                cache.IncludeCache.ClearLocked();
                cache.Unlock(CacheLockType.ReadWrite);
                rv.supported = true;
                break;

            case Command.EnableCache:
                DisableCaching = false;
                rv.supported   = true;
                break;

            case Command.Run:
                var stdout = new StringBuilder();
                var stderr = new StringBuilder();
                var comp   = cache.SetCompilerEx(req.pid, req.compiler, req.workdir, new Dictionary <string, string>(req.envs));
                cache.SetCaptureCallback(comp, (so) => { stdout.Append(so); }, (se) => { stderr.Append(se); });
                if (DisableCaching)
                {
                    rv.exitcode = comp.InvokeCompiler(req.argv, null, null, false, new List <string>());
                }
                else
                {
                    rv.exitcode = cache.CompileOrCache(comp, req.argv);
                }
                rv.supported = true;
                rv.stderr    = stderr.ToString();
                rv.stdout    = stdout.ToString();

                break;

            case Command.Quit:
                cache.SetupStats();
                Stop();
                break;
            }

            Logging.Emit("server resp: {0}", rv.exitcode);

            return(rv);
        }