Esempio n. 1
0
        public string[] EvaluateRunspacesToRemove(IRunspacesStatsMonitor.RunspaceType runspaceType)
        {
            IRunspaceStats[] runspacesToEvaluate = new IRunspaceStats[] {};
            lock (this) {
                runspacesToEvaluate = _runspaceStats.ToArray();
            }

            List <string> result = new List <string>();

            foreach (var runspaceStats in runspacesToEvaluate)
            {
                runspaceStats.Refresh();
                if (_retentionPolicy.ShouldRemove(runspaceStats))
                {
                    if (runspaceStats.IsWebConsole && runspaceType == IRunspacesStatsMonitor.RunspaceType.WebConsole)
                    {
                        result.Add(runspaceStats.RunspaceId);
                    }

                    if (!runspaceStats.IsWebConsole && runspaceType == IRunspacesStatsMonitor.RunspaceType.Runspace)
                    {
                        result.Add(runspaceStats.RunspaceId);
                    }
                }
            }

            return(result.ToArray());
        }
Esempio n. 2
0
        public bool ShouldRemove(IRunspaceStats runspaceStats)
        {
            bool result = false;

            foreach (var rule in _retentionRules ?? Enumerable.Empty <IRunspaceRetentionRule>())
            {
                result = rule.ShouldRemove(runspaceStats);
                // Break on first positive ShouldRemove answer
                if (result)
                {
                    break;
                }
            }

            return(result);
        }
Esempio n. 3
0
        public string[] EvaluateRunspacesToRemove()
        {
            IRunspaceStats[] runspacesToEvaluate = new IRunspaceStats[] {};
            lock (this) {
                runspacesToEvaluate = _runspaceStats.ToArray();
            }

            List <string> result = new List <string>();

            foreach (var runspaceStats in runspacesToEvaluate)
            {
                runspaceStats.Refresh();
                if (_retentionPolicy.ShouldRemove(runspaceStats))
                {
                    result.Add(runspaceStats.RunspaceId);
                }
            }

            return(result.ToArray());
        }
Esempio n. 4
0
 public bool ShouldRemove(IRunspaceStats runspaceStats)
 {
     return
         (!runspaceStats.IsActive &&
          (runspaceStats.IdleTimeSeconds > (_maxIdleTimeoutMinutes * 60)));
 }
Esempio n. 5
0
 public bool ShouldRemove(IRunspaceStats runspaceStats)
 {
     return(!runspaceStats.HasActiveSession && !runspaceStats.IsActive);
 }