Aggiunta metodo saveYamlConf x IOB

This commit is contained in:
Samuele Locatelli
2025-06-30 10:15:18 +02:00
parent d377c1cc86
commit 8d53fe433e
2 changed files with 73 additions and 7 deletions
+45 -6
View File
@@ -1883,6 +1883,50 @@ namespace MP_IO.Controllers
return answ;
}
/// <summary>
/// Processa una chiamata POST per l'invio di un oggetto YAML testuale corrispondente alla configurazione dell'IOB
/// PUT: IOB/saveConfYaml/SIMUL_03
/// </summary>
/// <param name="id">ID dell'IOB</param>
/// <returns></returns>
[HttpPost]
public string saveConfYaml(string id)
{
string answ = "";
if (string.IsNullOrEmpty(id))
{
answ = "Missing IOB";
}
else
{
// questa classe è derivata da Controller.Response... x cui recupero lo stream in
// altro modo...
string content = "";
System.Web.HttpContext.Current.Request.InputStream.Position = 0;
using (var reader = new StreamReader(Request.InputStream, System.Text.Encoding.UTF8, true, 4096, true))
{
content = reader.ReadToEnd();
}
//Rest
System.Web.HttpContext.Current.Request.InputStream.Position = 0;
if (content != null)
{
try
{
DataLayer DataLayerObj = new DataLayer();
DataLayerObj.setIobConfYaml(id, content);
answ = "OK";
}
catch (Exception exc)
{
logger.lg.scriviLog($"Errore in saveConfYaml{Environment.NewLine}{exc}");
}
}
}
return answ;
}
/// <summary>
/// Processa una chiamata POST per l'invio di un array Json di oggetti di conf DataItems (es
/// per MTC)
@@ -2129,18 +2173,13 @@ namespace MP_IO.Controllers
// uso datalayer che COMPRENDE MapoDb...
DataLayer DataLayerObj = new DataLayer();
int num2keep = 5;
var rConf = DataLayerObj.ListConfig.Where(x => x.chiave == "").FirstOrDefault();
var rConf = DataLayerObj.ListConfig.Where(x => x.chiave == "IO_NumReboot2Keep").FirstOrDefault();
if (rConf != null)
{
int.TryParse(rConf.valore, out num2keep);
}
// chiamo registrazione reboot
DataLayerObj.MapoDbObj.registraStartup(id, IPv4, agent, mac, num2keep);
#if false
// ora salvo che la macchina è stata (ri)avviata...
MapoDb.MapoDb MapoDbObj = new MapoDb.MapoDb();
MapoDbObj.registraStartup(id, IPv4, agent, mac);
#endif
answ = "OK";
}
catch (Exception exc)
+28 -1
View File
@@ -470,6 +470,15 @@ namespace MapoDb
{
return mHash($"MemMap:{idxMacchina}");
}
/// <summary>
/// Hash dati di configurazione IOB in formato YAML x la macchina specificata
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public static string ConfYamlHash(string idxMacchina)
{
return mHash($"ConfYaml:{idxMacchina}");
}
/// <summary>
/// Hash Redis contenente i dati MP di una specifico TYPE (es StatusMacchina,
@@ -4086,7 +4095,7 @@ namespace MapoDb
}
/// <summary>
/// Salvataggio su della mappa di memoria dell'IOB x ulteriori impieghi
/// Salvataggio della mappa di memoria dell'IOB x ulteriori impieghi
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="currMemMap"></param>
@@ -4104,6 +4113,24 @@ namespace MapoDb
return answ;
}
/// <summary>
/// Salvataggio YAML completo di configurazione dell'IOB
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="iobConfFull"></param>
/// <returns></returns>
public bool setIobConfYaml(string idxMacchina, string iobConfFull)
{
bool answ = false;
// se ho un area memoria valida...
if (!string.IsNullOrEmpty(iobConfFull))
{
// salvo!
memLayer.ML.setRSV(ConfYamlHash(idxMacchina), iobConfFull);
}
return answ;
}
/// <summary>
/// Restituisce il valore booleano se la macchina sia abilitata all'inserimento COMPLETO nel
/// Signal Log