Skip to content
Snippets Groups Projects
Commit 31fdefb0 authored by Niko Ehrenfeuchter's avatar Niko Ehrenfeuchter :keyboard:
Browse files

Prototype using event handlers for reacting on CPU load changes.

Refers to #36
parent 2f95a64b
No related branches found
No related tags found
No related merge requests found
......@@ -45,6 +45,7 @@ namespace ATxService
private int _txCurFileProgress;
private int _waitCyclesBeforeNextTx;
private Cpu _cpu;
private bool _cpuLoadHigh;
private DateTime _lastUserDirCheck = DateTime.MinValue;
......@@ -98,6 +99,8 @@ namespace ATxService
Probation = 16,
Enabled = true
};
_cpu.LoadAboveLimit += OnLoadAboveLimit;
_cpu.LoadBelowLimit += OnLoadBelowLimit;
}
catch (UnauthorizedAccessException ex) {
Log.Error("Not enough permissions to monitor the CPU load.\nMake sure the " +
......@@ -518,6 +521,22 @@ namespace ATxService
#region general methods
/// <summary>
/// Event handler for CPU load dropping below the configured limit.
/// </summary>
private void OnLoadBelowLimit(object sender, EventArgs e) {
Log.Warn("CPU load is below given limit.");
_cpuLoadHigh = false;
}
/// <summary>
/// Event handler for CPU load exceeding the configured limit.
/// </summary>
private void OnLoadAboveLimit(object sender, EventArgs e) {
Log.Warn("High CPU load detected!");
_cpuLoadHigh = true;
}
/// <summary>
/// Check system parameters for valid ranges and update the global service state accordingly.
/// </summary>
......@@ -526,7 +545,7 @@ namespace ATxService
// check all system parameters for valid ranges and remember the reason in a string
// if one of them is failing (to report in the log why we're suspended)
if (_cpu.Load() >= _config.MaxCpuUsage)
if (_cpuLoadHigh)
limitReason = "CPU usage";
else if (SystemChecks.GetFreeMemory() < _config.MinAvailableMemory)
limitReason = "RAM usage";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment