using System; using System.ComponentModel; namespace IOB_MAN { public class iobAdapt { /// /// Scadenza status IOB /// protected DateTime scadIobStatus = DateTime.Now; /// /// Ultimo status IOB letto /// protected IobWinStatus lastIobStatus { get; set; } /// /// Status iob corrente da RAM (se entro 1 sec) o da redis (se scaduto) /// protected IobWinStatus currIobStatus { get { IobWinStatus answ = new IobWinStatus(); if (scadIobStatus > DateTime.Now && lastIobStatus != null) { answ = lastIobStatus; } else { answ = redisMan.iobStatus; lastIobStatus = answ; scadIobStatus = DateTime.Now.AddSeconds(1); } return answ; } } protected DateTime lastSeen { get; set; } = DateTime.Now; /// /// Codice univoco macchina /// [DisplayName("IOB")] public string CodIOB { get; set; } /// /// Identificativo univoco processo /// [DisplayName("pid")] public int pID { get; set; } /// /// DataOra avvio dell'IOB /// [DisplayName("Started")] public DateTime startTime { get; set; } = DateTime.Now; /// /// Calcola uptime processo... /// [DisplayName("Uptime Total")] public string uptime { get { // in primis cerco SE sia running --> aggiorno lastSeen if (isRunning) { lastSeen = DateTime.Now; } TimeSpan uptime = lastSeen.Subtract(startTime); return utils.FormatTimeSpan(uptime); } } /// /// Verifica se il processo sia in RUN /// [DisplayName("Run")] public bool isRunning { get; set; } /// /// Gestore processi redis /// public RedisIobCache redisMan; /// /// Stato online dell'IOB /// [DisplayName("Online")] public bool iobOnline { get { return currIobStatus.online; } } /// /// Counter dell'IOB /// [DisplayName("pz.IOB")] public int iobCounter { get { return (int)currIobStatus.counterIOB; } } /// /// Counter del CNC /// [DisplayName("pz.CNC")] public int cncCounter { get { return (int)currIobStatus.counterMAC; } } /// /// lunghezza coda EVENTI /// [DisplayName("# EV")] public int queueElLen { get { return currIobStatus.queueEvLen; } } /// /// lunghezza coda FLog /// [DisplayName("# FL")] public int queueFlLen { get { return currIobStatus.queueFlLen; } } } }