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()); }
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); }
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()); }
public bool ShouldRemove(IRunspaceStats runspaceStats) { return (!runspaceStats.IsActive && (runspaceStats.IdleTimeSeconds > (_maxIdleTimeoutMinutes * 60))); }
public bool ShouldRemove(IRunspaceStats runspaceStats) { return(!runspaceStats.HasActiveSession && !runspaceStats.IsActive); }