private void HouseKeepingTimerElapsed(object sender, ElapsedEventArgs e)
{
_houseKeepingTimer.Stop();
if (LayoutPanel.NeedsRedraw)
{
_pnlCameras.PerformLayout();
_pnlCameras.Invalidate();
LayoutPanel.NeedsRedraw = false;
}
if (NeedsResourceUpdate)
{
RenderResources();
NeedsResourceUpdate = false;
}
if (_cputotalCounter != null)
{
try
{
while (_cpuAverages.Count > 4)
_cpuAverages.RemoveAt(0);
_cpuAverages.Add(_cpuCounter.NextValue()/Environment.ProcessorCount);
CpuUsage = _cpuAverages.Sum()/_cpuAverages.Count;
CpuTotal = _cputotalCounter.NextValue();
_counters = $"CPU: {CpuUsage:0.00}%";
if (_pcMem != null)
{
_counters += " RAM Usage: " + Convert.ToInt32(_pcMem.RawValue/1048576) + "Mb";
}
tsslMonitor.Text = _counters;
}
catch (Exception ex)
{
// _cputotalCounter = null;
Logger.LogExceptionToFile(ex);
}
if (CpuTotal > _conf.CPUMax)
{
if (ThrottleFramerate > 1)
ThrottleFramerate--;
}
else
{
if (ThrottleFramerate < 40)
ThrottleFramerate++;
}
}
else
{
_counters = "Stats Unavailable - See Log File";
}
if (_lastOver > DateTime.MinValue)
{
if (_lastOver < Helper.Now.AddSeconds(-4))
{
tsslMediaInfo.Text = "";
_lastOver = DateTime.MinValue;
}
}
_pingCounter++;
if (NeedsMediaRefresh > DateTime.MinValue && NeedsMediaRefresh < Helper.Now.AddSeconds(-1))
LoadPreviews();
if (Resizing)
{
if (_lastResize < Helper.Now.AddSeconds(-1))
Resizing = false;
}
if (_pingCounter == 301)
{
_pingCounter = 0;
//auto save
try
{
SaveObjects("");
}
catch (Exception ex)
{
Logger.LogExceptionToFile(ex);
}
try
{
SaveConfig();
}
catch (Exception ex)
{
Logger.LogExceptionToFile(ex);
}
}
try
{
if (!MWS.Running)
{
_tsslStats.Text = "Server Error - see log file";
if (MWS.NumErr >= 5)
{
Logger.LogMessageToFile("Server not running - restarting");
StopAndStartServer();
}
}
else
{
if (WsWrapper.WebsiteLive)
{
if (Conf.ServicesEnabled && !WsWrapper.LoginFailed)
{
_tsslStats.Text = LocRm.GetString("Online");
if (LoopBack && Conf.Subscribed)
_tsslStats.Text += $" ({LocRm.GetString("loopback")})";
else
{
if (!Conf.Subscribed)
_tsslStats.Text += $" ({LocRm.GetString("LANonlynotsubscribed")})";
else
_tsslStats.Text += $" ({LocRm.GetString("LANonlyNoLoopback")})";
}
}
else
{
_tsslStats.Text = LocRm.GetString("Offline");
}
}
else
{
_tsslStats.Text = LocRm.GetString("Offline");
}
}
if (Conf.ServicesEnabled && !WsWrapper.LoginFailed)
{
if (NeedsSync)
{
WsWrapper.ForceSync();
}
WsWrapper.PingServer();
}
_storageCounter++;
if (_storageCounter == 3600) // every hour
{
RunStorageManagement();
_storageCounter = 0;
}
if (_pingCounter == 80)
{
var t = new Thread(SaveFileData) {IsBackground = true, Name = "Saving File Data"};
t.Start();
}
if (_needsDelete)
{
_needsDelete = false;
try
{
if (_tDelete == null || _tDelete.Join(TimeSpan.Zero))
{
_tDelete = new Thread(DeleteFiles) {IsBackground = true};
_tDelete.Start();
}
}
catch
{
}
}
}
catch (Exception ex)
{
Logger.LogExceptionToFile(ex);
}
Logger.WriteLogs();
if (!_shuttingDown)
_houseKeepingTimer.Start();
}