Fix metodi da redisService a BaseObj

This commit is contained in:
Samuele Locatelli
2026-05-20 18:37:36 +02:00
parent bcce68c93e
commit 72370ddc70
2 changed files with 57 additions and 70 deletions
+57 -21
View File
@@ -49,13 +49,6 @@ namespace IOB_UT_NEXT.Iob
/// </summary>
public AlarmBlockType alarmType = AlarmBlockType.Bitmap;
#if false
/// <summary>
/// Conf adapter corrente
/// </summary>
public IobConfiguration cIobConf;
#endif
/// <summary>
/// Conteggio ATTUALE ore macchina IN LAVORO
/// </summary>
@@ -146,6 +139,11 @@ namespace IOB_UT_NEXT.Iob
/// </summary>
public DateTime lastIobOnline = DateTime.Now.AddHours(-1);
/// <summary>
/// Ultima verifica status IOB x forzare display status SRV
/// </summary>
public DateTime lastIobStatusDisplUpdate = DateTime.Now;
/// <summary>
/// dataOra ultimo log periodico...
/// </summary>
@@ -171,11 +169,6 @@ namespace IOB_UT_NEXT.Iob
/// </summary>
public DateTime lastSim;
/// <summary>
/// Ultima verifica status IOB x forzare display status SRV
/// </summary>
public DateTime lastIobStatusDisplUpdate = DateTime.Now;
/// <summary>
/// dataOra ultimo segnale inviato al SERVER...
/// </summary>
@@ -206,11 +199,6 @@ namespace IOB_UT_NEXT.Iob
/// </summary>
public bool needRefreshPzCount = true;
/// <summary>
/// Coda degli esiti di ping x calcolo stato macchina
/// </summary>
public DataQueue QueuePing;
/// <summary>
/// Determina se utilizzare blocchi di memoria IOT contigui (e quindi processing
/// "monoblocco" semplificato"=
@@ -220,22 +208,27 @@ namespace IOB_UT_NEXT.Iob
/// <summary>
/// Coda valori ALLARMI ove gestiti...
/// </summary>
public DataQueue QueueAlarm;// = new DataQueue("000", "QueueAlarm", false);
public DataQueue QueueAlarm;
/// <summary>
/// Oggetto della coda degli elementi letti di tipo FluxLog (e non ancora trasmessi)
/// </summary>
public DataQueue QueueFLog;// = new DataQueue("000", "QueueFLog", false);
public DataQueue QueueFLog;
/// <summary>
/// Oggetto della coda degli elementi letti (e non ancora trasmessi)
/// </summary>
public DataQueue QueueIN;// = new DataQueue("000", "QueueIN", false);
public DataQueue QueueIN;
/// <summary>
/// Coda valori MESSAGGI/EVENTI (da non sottocampionare come samples)...
/// </summary>
public DataQueue QueueMessages;// = new DataQueue("000", "QueueMessages", false);
public DataQueue QueueMessages;
/// <summary>
/// Coda degli esiti di ping x calcolo stato macchina
/// </summary>
public DataQueue QueuePing;
/// <summary>
/// Oggetto della coda degli elementi di tipo RawTransf (e non ancora trasmessi)
@@ -642,6 +635,49 @@ namespace IOB_UT_NEXT.Iob
return doVeto;
}
/// <summary>
/// Recupera la chiave per le statistiche delle chiamate.
/// </summary>
protected string GetCallStatsKey() => redisMan.redHash($"IOB:Status:{IOBConfFull.General.FilenameIOB}:CallStats");
/// <summary>
/// Recupera la chiave per i dati di produzione correnti.
/// </summary>
protected string GetCurrProdDataKey() => redisMan.redHash($"IOB:Status:{IOBConfFull.General.FilenameIOB}:CurrProdData");
/// <summary>
/// Recupera la chiave per il flusso di memoria.
/// </summary>
protected string GetFluxMemKey() => redisMan.redHash($"IOB:Status:{IOBConfFull.General.FilenameIOB}:FluxMem");
/// <summary>
/// Recupera la chiave per l'invio dei PODL.
/// </summary>
protected string GetPOdlSentKey() => redisMan.redHash($"IOB:Status:{IOBConfFull.General.FilenameIOB}:POdlSent");
/// <summary>
/// Recupera un valore specifico dal hash dello stato dell'IOB.
/// </summary>
protected string GetStatusField(string field)
{
string baseKey = redisMan.redHash($"IOB:Status:{IOBConfFull.General.FilenameIOB}");
return redisMan.redGetHashField(baseKey, field);
}
/// <summary>
/// Recupera la chiave per le statistiche settimanali.
/// </summary>
protected string GetWeekStatsKey() => redisMan.redHash($"IOB:Status:{IOBConfFull.General.FilenameIOB}:WeekStats");
/// <summary>
/// Imposta un valore nel hash dello stato dell'IOB.
/// </summary>
protected void SetStatusField(string field, string value)
{
string baseKey = redisMan.redHash($"IOB:Status:{IOBConfFull.General.FilenameIOB}");
redisMan.redSetHashField(baseKey, field, value);
}
/// <summary>
/// Setup di tutti gli oggetti Queue, ma solo alcuni hanno coda REDIS (quelli senza sono "sacrificabili"
/// </summary>
-49
View File
@@ -1,49 +0,0 @@
using System;
using IOB_UT_NEXT;
namespace IOB_WIN_FORM.Iob.Services
{
/// <summary>
/// Servizio applicativo che funge da wrapper semantico per le operazioni Redis.
/// Incapsula la costruzione delle chiavi per proteggere la logica di business dalla struttura fisica delle chiavi.
/// </summary>
public class RedisService
{
private readonly RedisIobCache _redisMan;
private readonly string _filenameIob;
private readonly tipoAdapter _tipo;
public RedisService(RedisIobCache redisMan, string filenameIob, tipoAdapter tipo)
{
_redisMan = redisMan ?? throw new ArgumentNullException(nameof(redisMan));
_filenameIob = filenameIob ?? throw new ArgumentNullException(nameof(filenameIob));
_tipo = tipo;
}
/// <summary>
/// Recupera un valore specifico dal hash dello stato dell'IOB.
/// </summary>
/// <param name="field">Il campo del hash da recuperare.</param>
/// <returns>Il valore come stringa.</returns>
public string GetStatusField(string field)
{
string key = $"IOB:Status:{_filenameIob}";
// Nota: Utilizziamo redHash per generare la chiave base se necessario,
// ma qui puntiamo direttamente alla struttura concordata.
return _redisMan.redGetHashField(key, field);
}
/// <summary>
/// Imposta un valore nel hash dello stato dell'IOB.
/// </summary>
/// <param name="field">Il campo del hash da impostare.</param>
/// <param name="value">Il valore da impostare.</param>
public void SetStatusField(string field, string value)
{
string key = $"IOB:Status:{_filenameIob}";
_redisMan.redSetHashField(key, field, value);
}
// Altri metodi semantici verranno aggiunti man mano che il refactoring procede.
}
}