From e413961bafe22d9758f4402613fad02fe9e2fb18 Mon Sep 17 00:00:00 2001
From: Niko Ehrenfeuchter <nikolaus.ehrenfeuchter@unibas.ch>
Date: Tue, 5 Jun 2018 15:53:23 +0200
Subject: [PATCH] Add SerializeHeartbeat()

---
 ATxCommon/Serializables/ServiceStatus.cs | 8 ++++++++
 ATxService/AutoTx.cs                     | 5 +----
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/ATxCommon/Serializables/ServiceStatus.cs b/ATxCommon/Serializables/ServiceStatus.cs
index 5df0e42..216ae1c 100644
--- a/ATxCommon/Serializables/ServiceStatus.cs
+++ b/ATxCommon/Serializables/ServiceStatus.cs
@@ -75,6 +75,14 @@ namespace ATxCommon.Serializables
             Log.Trace("Finished serializing [{0}].", _storageFile);
         }
 
+        /// <summary>
+        /// Wrapper to serialize XML if time since last is above threshold (default = 1 min).
+        /// </summary>
+        public void SerializeHeartbeat(int timeout=60) {
+            if (TimeUtils.SecondsSince(_lastStatusUpdate) >= timeout)
+                Serialize();
+        }
+
         public static ServiceStatus Deserialize(string file, ServiceConfig config) {
             Log.Trace("Trying to deserialize status XML file [{0}].", file);
             ServiceStatus status;
diff --git a/ATxService/AutoTx.cs b/ATxService/AutoTx.cs
index 622b409..edca7f8 100644
--- a/ATxService/AutoTx.cs
+++ b/ATxService/AutoTx.cs
@@ -598,10 +598,7 @@ namespace ATxService
             // mandatory tasks, run on every call:
             SendLowSpaceMail(SystemChecks.CheckFreeDiskSpace(_config.SpaceMonitoring));
             UpdateServiceState();
-
-            // update the status heartbeat at least once a minute:
-            if (TimeUtils.SecondsSince(_status.LastStatusUpdate) >= 60)
-                _status.Serialize();
+            _status.SerializeHeartbeat();
 
             if (TimeUtils.SecondsSince(_lastUserDirCheck) >= 120)
                 CreateIncomingDirectories();
-- 
GitLab