From 023995198daf5e0276992b215f6800aae2802239 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 4 Jun 2025 17:35:14 +0200 Subject: [PATCH] Update x fix ping ed FTP su tracciamento dati scambiati --- IOB-WIN-FORM/Iob/Generic.Protected.cs | 89 +++++++++++++-------------- IOB-WIN-FORM/Iob/PingWatchDog.cs | 4 ++ IOB-WIN-FTP/Iob/Ftp.cs | 10 +++ IOB-WIN-PING/DATA/CONF/MAIN.ini | 4 +- 4 files changed, 60 insertions(+), 47 deletions(-) diff --git a/IOB-WIN-FORM/Iob/Generic.Protected.cs b/IOB-WIN-FORM/Iob/Generic.Protected.cs index 474e256c..0b45a418 100644 --- a/IOB-WIN-FORM/Iob/Generic.Protected.cs +++ b/IOB-WIN-FORM/Iob/Generic.Protected.cs @@ -3534,6 +3534,45 @@ namespace IOB_WIN_FORM.Iob redisMan.redSaveHash(rKey, kvp, oggi.AddDays(3)); } + /// + /// Traccia in redis l'attività di scambio dati (tipicamente non in polling) + /// + /// Dim pacchetto (numero byte scambiati/ricevuti) + /// Dim minima x registrare info + protected void trackExchData(long byteSize, long val2rec = 256) + { + // accumulo counter byte + currByteCount += byteSize; + // se superato limite scrivo (default 128byte) + if (currByteCount >= val2rec) + { + string rkeyTS = $"{redisMan.redIobTrackKey}:DataInTS"; + string rkeyHS = $"{redisMan.redIobTrackKey}:DataInHS"; + // chiamo direttamente metodo redis... + string newUid_ = redisMan.TrackExchData(rkeyTS, rkeyHS, currByteCount); + currByteCount = 0; + } + } + + /// + /// Track dati ricevuti generici (serializzando) + /// + /// + protected void trackExchDataRaw(object genObj, long val2rec = 256) + { + try + { + // salvo indicazione valore ricevuto + string rawVal = JsonConvert.SerializeObject(genObj); + // salvo dim caratteri ricevuti + trackExchData(rawVal.Length, val2rec); + } + catch (Exception exc) + { + lgError($"trackExchDataRaw | errore in fase di track obj ricevuto{Environment.NewLine}{exc}"); + } + } + /// /// Traccia in redis l'attività di lettura dati /// @@ -3573,7 +3612,6 @@ namespace IOB_WIN_FORM.Iob if (actData.ContainsKey("ProcTime")) { double.TryParse(actData["ProcTime"], NumberStyles.Float, cultInv, out dPTime); - } dPTime += timeSec; } @@ -3594,50 +3632,6 @@ namespace IOB_WIN_FORM.Iob // salvo il mio hash aggiornato! redisMan.redSaveHashDict(rKey, actData); } - /// - /// Traccia in redis l'attività di scambio dati (tipicamente non in polling) - /// - /// Dim pacchetto (numero byte scambiati/ricevuti) - /// Dim minima x registrare info - protected void trackExchData(long byteSize, long val2rec = 256) - { - // accumulo counter byte - currByteCount += byteSize; - // se superato limite scrivo (default 128byte) - if (currByteCount >= val2rec) - { - string rkeyTS = $"{redisMan.redIobTrackKey}:DataInTS"; - string rkeyHS = $"{redisMan.redIobTrackKey}:DataInHS"; - // chiamo direttamente metodo redis... - string newUid_ = redisMan.TrackExchData(rkeyTS, rkeyHS, currByteCount); - currByteCount = 0; - } - } - - - /// - /// Track dati ricevuti generici (serializzando) - /// - /// - protected void trackExchDataRaw(object genObj, long val2rec = 256) - { - try - { - // salvo indicazione valore ricevuto - string rawVal = JsonConvert.SerializeObject(genObj); - // salvo dim caratteri ricevuti - trackExchData(rawVal.Length, val2rec); - } - catch (Exception exc) - { - lgError($"trackExchDataRaw | errore in fase di track obj ricevuto{Environment.NewLine}{exc}"); - } - } - - /// - /// Accumulatore counter byte x inviare meno record in REDIS - /// - private long currByteCount = 0; /// /// Reset valori trackdata all'avvio dell'adapter IOB @@ -4044,6 +4038,11 @@ namespace IOB_WIN_FORM.Iob /// private static Logger _logger = LogManager.GetCurrentClassLogger(); + /// + /// Accumulatore counter byte x inviare meno record in REDIS + /// + private long currByteCount = 0; + /// /// Ultimo invio valore a server /// diff --git a/IOB-WIN-FORM/Iob/PingWatchDog.cs b/IOB-WIN-FORM/Iob/PingWatchDog.cs index 2fec481d..55d6be34 100644 --- a/IOB-WIN-FORM/Iob/PingWatchDog.cs +++ b/IOB-WIN-FORM/Iob/PingWatchDog.cs @@ -154,8 +154,12 @@ namespace IOB_WIN_FORM.Iob lgDebug("PING: Reset PingQueue"); + Stopwatch sw = new Stopwatch(); + sw.Start(); bool pingOK = testPingMachine == IPStatus.Success; addTest(pingOK); + sw.Stop(); + trackReadData(4, sw.Elapsed.TotalSeconds); // se passa il ping faccio il resto... if (pingStatusOk()) diff --git a/IOB-WIN-FTP/Iob/Ftp.cs b/IOB-WIN-FTP/Iob/Ftp.cs index 62a1c774..3eefec1b 100644 --- a/IOB-WIN-FTP/Iob/Ftp.cs +++ b/IOB-WIN-FTP/Iob/Ftp.cs @@ -204,6 +204,9 @@ namespace IOB_WIN_FTP.Iob } // salvo in currProd.. upsertKey(item.Key, item.Value); + + // salvo dati scambiati + trackExchData(fileContent.LongCount(), 1024); break; case taskType.startSetup: @@ -238,6 +241,8 @@ namespace IOB_WIN_FTP.Iob lgError($"Error in startSetup | fileUpload | locFile: {locFile} | remFile: {remFile}"); } } + // salvo dati scambiati + trackExchData(fileContent.LongCount(), 1024); break; @@ -748,6 +753,7 @@ namespace IOB_WIN_FTP.Iob // eseguo mirroring directory actKey = "FtpSync"; actVal = "SRC --> DEST | Size"; + long fullSize = 0; if (step.ParamList != null && step.ParamList.Count > 1) { sw.Restart(); @@ -784,9 +790,13 @@ namespace IOB_WIN_FTP.Iob { lgTrace($"Skipped sync | {actVal}"); } + // traccio dimensione + fullSize += result.Size; } // risultato sintetico come successi... fatto = mirResult != null && mirResult.Where(x => !x.IsSuccess).Count() == 0; + // salvo dati ricevuti + trackExchData(fullSize, 1024); if (!fatto) { diff --git a/IOB-WIN-PING/DATA/CONF/MAIN.ini b/IOB-WIN-PING/DATA/CONF/MAIN.ini index 78b89df6..a348446a 100644 --- a/IOB-WIN-PING/DATA/CONF/MAIN.ini +++ b/IOB-WIN-PING/DATA/CONF/MAIN.ini @@ -17,8 +17,8 @@ CLI_INST=SteamWareSim ;STARTLIST=PING ;STARTLIST=3024-PING ;STARTLIST=SIMUL_01 -;STARTLIST=FTP-PING -STARTLIST=SIMUL_08 +STARTLIST=FTP-PING +;STARTLIST=SIMUL_08 MAXCNC=10 \ No newline at end of file