ServerHealthCheck.cs 992 B

12345678910111213141516171819202122232425
  1. using System;
  2. using System.IO;
  3. using SingularityGroup.HotReload.Editor.Cli;
  4. namespace SingularityGroup.HotReload.Editor {
  5. public class ServerHealthCheck : IServerHealthCheckInternal {
  6. private static readonly TimeSpan heartBeatTimeout = TimeSpan.FromMilliseconds(5000);
  7. internal static readonly IServerHealthCheckInternal instance = new ServerHealthCheck();
  8. public static IServerHealthCheck I => instance;
  9. public static TimeSpan HeartBeatTimeout => heartBeatTimeout;
  10. ServerHealthCheck() { }
  11. /// <summary>
  12. /// Whether or not the server is running and responsive
  13. /// </summary>
  14. public bool IsServerHealthy { get; private set; }
  15. void IServerHealthCheckInternal.CheckHealth() {
  16. var fi = new FileInfo(Path.Combine(CliUtils.GetCliTempDir(), "health"));
  17. IsServerHealthy = fi.Exists && DateTime.UtcNow - fi.LastWriteTimeUtc < heartBeatTimeout;
  18. }
  19. }
  20. }