diff --git a/IOB-UT-NEXT/Iob/BaseObj.cs b/IOB-UT-NEXT/Iob/BaseObj.cs index 0ceb3710..a7c5c09c 100644 --- a/IOB-UT-NEXT/Iob/BaseObj.cs +++ b/IOB-UT-NEXT/Iob/BaseObj.cs @@ -371,6 +371,7 @@ namespace IOB_UT_NEXT.Iob #region Public Methods +#if false /// /// Effettua chiamata URL e restituisce risultato /// @@ -403,7 +404,7 @@ namespace IOB_UT_NEXT.Iob } } return answ; - } + } /// /// Effettua chiamata URL e restituisce risultato @@ -431,6 +432,7 @@ namespace IOB_UT_NEXT.Iob } return answ; } +#endif /// /// processa dataLayer e se necessario salva/mostra @@ -455,22 +457,12 @@ namespace IOB_UT_NEXT.Iob return sMacAddress; } - public static void resetDebugConsole() - { - } - - /// - /// Reset dei webclients - /// - public static void resetWebClients() - { - utils.resetWebClients(); - } - #endregion Public Methods #region Protected Fields + + /// /// Valore di attesa (random) dopo ogni invio x evitare congestione send... /// diff --git a/IOB-UT-NEXT/baseUtils.cs b/IOB-UT-NEXT/baseUtils.cs index c39aa38b..330d2642 100644 --- a/IOB-UT-NEXT/baseUtils.cs +++ b/IOB-UT-NEXT/baseUtils.cs @@ -600,12 +600,6 @@ namespace IOB_UT_NEXT if (num >= 100) num /= 100; if (num >= 10) num /= 10; -#if false - // formulazione alternativa con ciclo... - while (num >= 10) - num /= 10; -#endif - return num; } @@ -812,15 +806,6 @@ namespace IOB_UT_NEXT return result; } - public static void resetWebClients() - { -#if false - // resetto i webclients... - client = new WebClientWT(); - clientPayload = new WebClientWT(); -#endif - } - /// /// Effettua reverse della stringa /// diff --git a/IOB-WIN-FORM/AdapterForm.cs b/IOB-WIN-FORM/AdapterForm.cs index 39a2c8a5..89233c02 100644 --- a/IOB-WIN-FORM/AdapterForm.cs +++ b/IOB-WIN-FORM/AdapterForm.cs @@ -1466,7 +1466,7 @@ namespace IOB_WIN_FORM // salvo nuovo valore invio iobObj.LastSendSet(sendKey, DateTime.Now); // segnalo reboot (programma - url file)... - await Iob.Generic.callUrl(iobObj.urlReboot, true); + await utils.callUrlAsync(iobObj.urlReboot); } } else diff --git a/IOB-WIN-FORM/Iob/Generic.cs b/IOB-WIN-FORM/Iob/Generic.cs index fb5e8769..5b06e56a 100644 --- a/IOB-WIN-FORM/Iob/Generic.cs +++ b/IOB-WIN-FORM/Iob/Generic.cs @@ -60,7 +60,7 @@ namespace IOB_WIN_FORM.Iob // init oggetto redis... redisMan = new RedisIobCache(IobConfNew.MapoMes.IpAddr, IobConfNew.General.FilenameIOB, $"{IobConfNew.General.IobType}", IobConfNew.General.MinDeltaSec); - + // init code SetupQueue(); @@ -1316,19 +1316,6 @@ namespace IOB_WIN_FORM.Iob case taskType.processOtherInfo: bool okProc = ProcessOtherInfo(iKey, item.Value); taskVal = okProc ? $"OK ProcessOtherInfoAsync | {iKey} | {item.Value}" : $"ERROR ProcessOtherInfoAsync | {iKey} | {item.Value}"; -#if false - try - { - Task.Run(async () => okProc = await ProcessOtherInfoAsync(iKey, item.Value)) - .GetAwaiter() - .GetResult(); - taskVal = okProc ? $"OK ProcessOtherInfoAsync | {iKey} | {item.Value}" : $"ERROR ProcessOtherInfoAsync | {iKey} | {item.Value}"; - } - catch (Exception ex) - { - lgError("ProcessOtherInfoAsync | Crash nel ponte Sync/Async: " + ex.Message); - } -#endif break; default: @@ -1439,7 +1426,7 @@ namespace IOB_WIN_FORM.Iob if (!isMulti) { // invio chiamata URL x reset ODL su macchina - rawSplit = await callUrl(urlForceSplit, false); + rawSplit = await utils.callUrlAsync(urlForceSplit); fatto = (rawSplit != "KO") ? true : false; } // se multi gestisco il bit delle tavole... @@ -1450,7 +1437,7 @@ namespace IOB_WIN_FORM.Iob // invio chiamata URL x reset ODL su macchina, ATTENZIONE scriviamo // | al posto di "#" che in URL sarebbe filtrato... fullUrl = $"{urlForceSplit}&multi={item}"; - rawSplit = await callUrl(fullUrl, false); + rawSplit = await utils.callUrlAsync(fullUrl); lgDebug($"Esecuzione forceSplit | URL: {fullUrl} | esito: {rawSplit}"); } fatto = (rawSplit == "OK") ? true : false; @@ -1874,32 +1861,6 @@ namespace IOB_WIN_FORM.Iob case urlType.RawTransf: BaseRawTransf currRTData = new BaseRawTransf(); -#if false - rawTransfJsonPayload fullRTObj = new rawTransfJsonPayload(); - fullRTObj.rawTransfData = new List(); - // inizio processando ogni valore - foreach (var item in elencoValori) - { - try - { - currRTData = JsonConvert.DeserializeObject(item); - } - catch (Exception exc) - { - lgError($"Eccezione in deserializzazione BaseRawTransf:{Environment.NewLine}{exc}"); - } - fullRTObj.rawTransfData.Add(currRTData); - } - // conversione finale - try - { - answ = JsonConvert.SerializeObject(fullRTObj); - } - catch (Exception exc) - { - lgError($"RawTransf Errore in costruzione jsonPayload:{Environment.NewLine}{exc}"); - } -#endif // provo una serializzazione "brutale", ovvero aggiungo alla stringa il // valore di testa... @@ -1971,9 +1932,9 @@ namespace IOB_WIN_FORM.Iob /// public DateTime LastSendGet(string keyReq) { - DateTime lastSend = DateTime.Now.AddDays(-1); - string lastSendKey = GetStatusField("LastSend"); - string rawVal = redisMan.redGetHashField(lastSendKey, keyReq); + DateTime lastSend = DateTime.Now.AddDays(-1); + string lastSendKey = GetStatusField("LastSend"); + string rawVal = redisMan.redGetHashField(lastSendKey, keyReq); if (!string.IsNullOrEmpty(rawVal)) { lastSend = DataSerializer.Deserialize(rawVal); @@ -1995,7 +1956,7 @@ namespace IOB_WIN_FORM.Iob /// public bool LastSendSet(string keyReq, DateTime dtRif) { - string lastSendKey = GetStatusField("LastSend"); + string lastSendKey = GetStatusField("LastSend"); string rawVal = DataSerializer.Serialize(dtRif); KeyValuePair[] hashFields = new KeyValuePair[1]; hashFields[0] = new KeyValuePair(keyReq, rawVal); @@ -2212,7 +2173,7 @@ namespace IOB_WIN_FORM.Iob foreach (var item in IOBConfFull.Device.MultiIobList) { fullUrl = $@"{urlCommand("fixDailyOdlConfPzCount")}{item}"; - autoOdlRes = await callUrl(fullUrl, false); + autoOdlRes = await utils.callUrlAsync(fullUrl); } } fatto = autoOdlRes == "OK"; @@ -2236,7 +2197,7 @@ namespace IOB_WIN_FORM.Iob rawDataInizio = ""; if (!isMulti) { - rawDataInizio = await callUrl(urlInizioOdlIob, false); + rawDataInizio = await utils.callUrlAsync(urlInizioOdlIob); DateTime.TryParse(rawDataInizio, out inizioOdl); } else @@ -2246,7 +2207,7 @@ namespace IOB_WIN_FORM.Iob foreach (var item in IOBConfFull.Device.MultiIobList) { fullUrl = $"{urlInizioOdlIob}|{item}"; - rawDataInizio = await callUrl(fullUrl, false); + rawDataInizio = await utils.callUrlAsync(fullUrl); DateTime.TryParse(rawDataInizio, out tmpData); inizioOdl = (tmpData < inizioOdl) ? tmpData : inizioOdl; } @@ -2260,7 +2221,7 @@ namespace IOB_WIN_FORM.Iob { // controllo SE sono fermo (spento o in manuale) per il // periodo minimo richiesto... - rawIdle = await callUrl(urlIdleTime, false); + rawIdle = await utils.callUrlAsync(urlIdleTime); int.TryParse(rawIdle, out idlePeriod); } else @@ -2270,7 +2231,7 @@ namespace IOB_WIN_FORM.Iob foreach (var item in IOBConfFull.Device.MultiIobList) { fullUrl = $"{urlIdleTime}|{item}"; - rawIdle = await callUrl(fullUrl, false); + rawIdle = await utils.callUrlAsync(fullUrl); int.TryParse(rawIdle, out tmpIdle); idlePeriod = tmpIdle > idlePeriod ? tmpIdle : idlePeriod; } @@ -2285,7 +2246,7 @@ namespace IOB_WIN_FORM.Iob // fare, se sfora (RANDOM) > +(50...110)% --> cambia! if (!callChangeODL && IOBConfFull.Odl.ChangeOdlMode == "SIMUL") { - var rawCount = await callUrl(urlGetNumPzCurrODL, false); + var rawCount = await utils.callUrlAsync(urlGetNumPzCurrODL); if (int.TryParse(rawCount, out var numPzReqOdl)) { int limitQty = (numPzReqOdl * rndGen.Next(150, 210)) / 100; @@ -2751,72 +2712,6 @@ namespace IOB_WIN_FORM.Iob return taskDone; } -#if false - /// - /// Processa esecuzione task ricevuti - /// - /// - /// - /// - public async Task> ProcessTask(Dictionary task2exe, string codTav) - { - Dictionary taskDone = new Dictionary(); - Dictionary task2Add = new Dictionary(); - // eseguo realmente solo se NON disabilitata questa gestione (caso doppio PLC/HMI)... - if (!IOBConfFull.Device.DisabExeTask) - { - if (task2exe != null) - { - string logMsg = $"Task2Exe S01: {task2exe.Count} task ricevuti"; - if (!string.IsNullOrEmpty(codTav)) - { - logMsg += $" | codTav: {codTav}"; - } - lgInfo(logMsg); - int idTask = 0; - foreach (var item in task2exe) - { - idTask++; - lgInfo($"[{idTask:00}] - {item.Key} --> {item.Value}"); - // verifico SE il task abbia un duplo writeLink e nel caso lo aggiungo... - var linkVal = getOptWriteLink(item.Key); - if (!string.IsNullOrEmpty(linkVal)) - { - // aggiungo a task2add SE manca... - if (!task2Add.ContainsKey(linkVal)) - { - task2Add.Add(linkVal, item.Value); - } - lgInfo($"Aggiunta task linked: {linkVal} -> {item.Value}"); - } - } - // se ho task Link da aggiungere li aggiungo! - if (task2Add.Count > 0) - { - foreach (var item in task2Add) - { - task2exe.Add(item.Key, item.Value); - } - } - // chiamo procedura esecutiva (diversa x ogni IOB) - taskDone = executeTasks(task2exe, codTav); - lgInfo($"Task2Exe S02: eseguiti {taskDone.Count} task"); - // loggo tutti i task done... - foreach (var item in taskDone) - { - sendToTaskWatch(item.Key, item.Value, codTav); - } - // ora chiamo la cancellazione dei task eseguiti... - foreach (var item in taskDone) - { - await remTask2exe(item.Key, item.Value, codTav); - } - } - } - return taskDone; - } -#endif - /// /// Classe fittizia in caso di processing task in MsVHF /// @@ -3363,16 +3258,7 @@ namespace IOB_WIN_FORM.Iob if (await CheckServerAliveAsync()) { // chiamo URL! - string answ = await callUrlWithPayloadAsync(lastUrl, payload, doAsync); - - // valutare invio REST alternativo... -#if false - // invio alternativo nuovo - if (string.IsNullOrEmpty(answ)) - { - answ = utils.ExecCallPostPlain(lastUrl, payload); - } -#endif + string answ = await utils.callUrlAsync(lastUrl, payload); // loggo! lgInfo($"[SEND payload] TipoURL: {tipoUrl} | {listQueueVal.Count} records --> {answ}"); @@ -3460,7 +3346,7 @@ namespace IOB_WIN_FORM.Iob if (await CheckServerAliveAsync()) { // chiamo URL! - string answ = await callUrl(lastUrl, false); + string answ = await utils.callUrlAsync(lastUrl); // loggo! lgDebug(string.Format("[SEND] {0} -> {1}", queueVal, answ)); // se oltre 1 min NON era online --> check pezzi! @@ -3687,7 +3573,7 @@ namespace IOB_WIN_FORM.Iob parentForm.displayTaskAndLog("[STOP] Stopping adapter - last periodic data read...", true); // salvo statistiche - string callKey = GetCallStatsKey(); + string callKey = GetCallStatsKey(); await CallMetricsCollector.SaveToRedisAsync(redisMan.currDb, callKey, false); // chiudo la connessione all'adapter... @@ -3981,11 +3867,10 @@ namespace IOB_WIN_FORM.Iob // Se non è il primo tentativo, resetta i client e aspetta if (i > 0) { - if (i == 4) resetWebClients(); // Reset specifico a metà tentativi await Task.Delay(rand.Next(150, 500)); } - string resp = await callUrl(urlAlive, false); + string resp = await utils.callUrlAsync(urlAlive); if (resp == "OK") return true; } catch (Exception ex) @@ -3996,35 +3881,6 @@ namespace IOB_WIN_FORM.Iob return false; } -#if false - /// - /// Processing di una risposta raw di task2exe - /// - /// Risposta come string RAW - /// Cod Tav (opzionale) - private async Task ProcessResp(string resp, string codTav) - { - Dictionary task2exe = new Dictionary(); - Dictionary taskDone = new Dictionary(); - if (!string.IsNullOrEmpty(resp) && resp.Length > 2) - { - try - { - task2exe = JsonConvert.DeserializeObject>(resp); - // se ho da fare chiamo esecuzione.. - if (task2exe.Count > 0) - { - taskDone = await ProcessTask(task2exe, codTav); - } - } - catch (Exception exc) - { - lgError($"Eccezione in ServerGetRequestsAsync.ProcessResp:{Environment.NewLine}{exc}"); - } - } - } -#endif - /// /// Update stato server /// @@ -4663,8 +4519,8 @@ namespace IOB_WIN_FORM.Iob get { Dictionary answ = new Dictionary(); - string redKey = GetPOdlSentKey(); - string rawData = redisMan.getRSV(redKey); + string redKey = GetPOdlSentKey(); + string rawData = redisMan.getRSV(redKey); if (!string.IsNullOrEmpty(rawData)) { try @@ -4682,8 +4538,8 @@ namespace IOB_WIN_FORM.Iob set { string rawVal = JsonConvert.SerializeObject(value); - string redKey = GetPOdlSentKey(); - redisMan.setRSV(redKey, rawVal); + string redKey = GetPOdlSentKey(); + redisMan.setRSV(redKey, rawVal); lgDebug($"Salvataggio status POdlSentFileArch | {value.Count} record"); } } @@ -4753,10 +4609,10 @@ namespace IOB_WIN_FORM.Iob /// /// Redis key del dizionari valori DataItemMem persistiti /// - protected string rKeyFluxMem - { - get => GetFluxMemKey(); - } + protected string rKeyFluxMem + { + get => GetFluxMemKey(); + } protected Random rndGen { get; set; } = new Random(); @@ -6075,33 +5931,7 @@ namespace IOB_WIN_FORM.Iob /// protected virtual bool iobWriteLocalUSTD() { - bool answ = false; -#if false - // conf ftp - var ftpConf = IOBConfFull.Special.FtpConf; - // salvo articoli - string locDir = ftpConf.DirLocal; - bool addHeader = ftpConf.CsvAddHeader; - string basePath = Application.StartupPath; - string tempDir = Path.Combine(basePath, locDir); - lgInfo($"iobWriteLocalCSV | locDir: {locDir} | addHeader: {addHeader} | tempDir: {tempDir}"); - baseUtils.checkDir(tempDir); - string filePath = Path.Combine(tempDir, "articoli.csv"); - answ = DataExport.SaveToCsv(ListaArticoli, filePath, addHeader); - if (answ) - { - lgInfo($"CSV: saved ART file as articoli.csv at {filePath}"); - // salvo PODL - string csvName = $"{DateTime.Now:dd-MM-yyyy}.csv"; - filePath = Path.Combine(tempDir, $"{csvName}"); - answ = DataExport.SaveToCsv(ListaJobs, filePath, addHeader); - if (answ) - { - lgInfo($"CSV: saved PODL file {csvName} at {filePath}"); - } - } -#endif - return answ; + return false; } /// @@ -6352,7 +6182,7 @@ namespace IOB_WIN_FORM.Iob // PONTE SYNC/ASYNC: Ora sw.Stop() aspetterà la fine reale dell'operazione Task.Run(async () => { - var rawListPODL = await callUrl(urlGetNextPODL, false); + var rawListPODL = await utils.callUrlAsync(urlGetNextPODL); if (!string.IsNullOrEmpty(rawListPODL)) { reqPOdlList = JsonConvert.DeserializeObject>(rawListPODL) ?? new List(); @@ -6889,15 +6719,14 @@ namespace IOB_WIN_FORM.Iob string rawWeek = JsonConvert.SerializeObject(cPerInfo); redHashWeek.Add(cWeek, rawWeek); } - // salvo in redis... - string fullKey = GetWeekStatsKey(); - var okHashDict = redisMan.redSaveHashDict(fullKey, redHashWeek); + // salvo in redis... + string fullKey = GetWeekStatsKey(); + var okHashDict = redisMan.redSaveHashDict(fullKey, redHashWeek); // invio ANCHE in MP-IO l'update delle info... string remUrl = urlSetHashDict; string dictPayload = JsonConvert.SerializeObject(redHashWeek); - //await callUrlWithPayloadAsync(remUrl, dictPayload, false); - await callUrlWithPayloadAsync(remUrl, dictPayload, true); + await utils.callUrlAsync(remUrl, dictPayload); } } @@ -6919,9 +6748,9 @@ namespace IOB_WIN_FORM.Iob week = cal.GetWeekOfYear(adesso, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); // verifico se ci sia la settimana indicata in elenco... string currWeek = $"{adesso:yyyy}-{week:00}"; - // recupero elenco delle settimane da processare da redis/WeekStats - string fullKey = GetWeekStatsKey(); - Dictionary currStats = redisMan.redGetHashDict(fullKey); + // recupero elenco delle settimane da processare da redis/WeekStats + string fullKey = GetWeekStatsKey(); + Dictionary currStats = redisMan.redGetHashDict(fullKey); if (currStats != null && currStats.Count > 0) { // definisco il DICT delle settimane da processare (= settimane passate, NON la corrente...) @@ -7157,7 +6986,7 @@ namespace IOB_WIN_FORM.Iob // PONTE SYNC/ASYNC: Ora sw.Stop() aspetterà la fine reale dell'operazione Task.Run(async () => { - var rawListPODL = await callUrl(urlGetNextPODL, false); + var rawListPODL = await utils.callUrlAsync(urlGetNextPODL); if (!string.IsNullOrEmpty(rawListPODL)) { try @@ -7350,7 +7179,7 @@ namespace IOB_WIN_FORM.Iob { bool answ = false; DateTime dtCurr = DateTime.Now; - string resp = await callUrl($"{urlODLClose}{idxOdl}&dtEve={dtRif}&dtCurr={dtCurr}", false); + string resp = await utils.callUrlAsync($"{urlODLClose}{idxOdl}&dtEve={dtRif}&dtCurr={dtCurr}"); answ = resp == "OK"; return answ; } @@ -7371,7 +7200,7 @@ namespace IOB_WIN_FORM.Iob Task.Run(async () => { // invio chiamata URL x chiusura ODL su macchina - string callResp = await callUrl(fullUrl, false); + string callResp = await utils.callUrlAsync(fullUrl); answ = callResp == "OK"; }) .GetAwaiter() @@ -7522,7 +7351,7 @@ namespace IOB_WIN_FORM.Iob // invio e salvo... string remUrl = urlSaveMachIobConf; string dictPayload = JsonConvert.SerializeObject(currDict); - await callUrlWithPayloadAsync(remUrl, dictPayload, true); + await utils.callUrlAsync(remUrl, dictPayload); lgTrace("Invio MachineConf effettuato"); } } @@ -7549,9 +7378,6 @@ namespace IOB_WIN_FORM.Iob string url2call = $"{urlSetOptVal}pName={paramName}&pValue={paramValue}"; lgInfo("chiamata URL " + url2call); await utils.callUrlAsync(url2call); -#if false - utils.callUrlNow(url2call); -#endif } } } @@ -7584,7 +7410,7 @@ namespace IOB_WIN_FORM.Iob Task.Run(async () => { // invio chiamata URL x chiusura ODL su macchina - string callResp = await callUrl(fullUrl, false); + string callResp = await utils.callUrlAsync(fullUrl); answ = callResp == "OK"; }) .GetAwaiter() @@ -7614,7 +7440,7 @@ namespace IOB_WIN_FORM.Iob Task.Run(async () => { // invio chiamata URL x chiusura ODL su macchina - string callResp = await callUrl(fullUrl, false); + string callResp = await utils.callUrlAsync(fullUrl); answ = callResp == "OK"; }) .GetAwaiter() @@ -8167,7 +7993,7 @@ namespace IOB_WIN_FORM.Iob try { // invio chiamata URL x chiusura ODL su macchina - string callResp = await callUrl(fullUrl, false); + string callResp = await utils.callUrlAsync(fullUrl); fatto = (callResp != "KO") ? true : false; } catch @@ -8211,7 +8037,7 @@ namespace IOB_WIN_FORM.Iob try { // invio chiamata URL x chiusura ODL su macchina - string callResp = await callUrl(fullUrl, false); + string callResp = await utils.callUrlAsync(fullUrl); fatto = (callResp != "KO") ? true : false; } catch @@ -8257,7 +8083,7 @@ namespace IOB_WIN_FORM.Iob try { // invio chiamata URL x chiusura ODL su macchina - string callResp = await callUrl(fullUrl, false); + string callResp = await utils.callUrlAsync(fullUrl); fatto = (callResp != "KO") ? true : false; } catch @@ -8281,7 +8107,7 @@ namespace IOB_WIN_FORM.Iob Task.Run(async () => { // invio chiamata URL x chiusura ODL su macchina - string callResp = await callUrl(fullUrl, false); + string callResp = await utils.callUrlAsync(fullUrl); fatto = (callResp != "KO") ? true : false; }) .GetAwaiter() @@ -8313,7 +8139,7 @@ namespace IOB_WIN_FORM.Iob Task.Run(async () => { // invio chiamata URL x chiusura ODL su macchina - string callResp = await callUrl(fullUrl, false); + string callResp = await utils.callUrlAsync(fullUrl); fatto = (callResp != "KO") ? true : false; }) .GetAwaiter() @@ -8342,7 +8168,7 @@ namespace IOB_WIN_FORM.Iob // PONTE SYNC/ASYNC: Ora sw.Stop() aspetterà la fine reale dell'operazione Task.Run(async () => { - string resp = await callUrl(urlEncoded, false); + string resp = await utils.callUrlAsync(urlEncoded); int.TryParse(resp, out answ); }) .GetAwaiter() @@ -8608,7 +8434,7 @@ namespace IOB_WIN_FORM.Iob try { // invio chiamata URL x avvio PODL su macchina - string rawSplit = await callUrl(fullUrl, false); + string rawSplit = await utils.callUrlAsync(fullUrl); fatto = (rawSplit != "KO") ? true : false; } catch @@ -8633,7 +8459,7 @@ namespace IOB_WIN_FORM.Iob try { // invio chiamata URL x avvio PODL su macchina - string rawSplit = await callUrl(fullUrl, false); + string rawSplit = await utils.callUrlAsync(fullUrl); fatto = (rawSplit != "KO") ? true : false; } catch @@ -8934,7 +8760,7 @@ namespace IOB_WIN_FORM.Iob private async Task currOdlStart() { DateTime inizioOdl = DateTime.Now; - string rawDataInizio = await callUrl(urlInizioOdlIob, false); + string rawDataInizio = await utils.callUrlAsync(urlInizioOdlIob); DateTime.TryParse(rawDataInizio, out inizioOdl); return inizioOdl; } @@ -9060,7 +8886,7 @@ namespace IOB_WIN_FORM.Iob } return fatto; } - + private async Task ExecuteIobCheckWithRetry(int maxRetries) { var rand = new Random(); @@ -9070,14 +8896,11 @@ namespace IOB_WIN_FORM.Iob { if (i > 0) { - // Al terzo tentativo fallito resetto i client - if (i == 3) resetWebClients(); - int delay = i == 3 ? rand.Next(250, 1000) : rand.Next(250, 500); await Task.Delay(delay); } - string callResp = await callUrl(urlIobEnabled, i < 3); // true per i primi tentativi + string callResp = await utils.callUrlAsync(urlIobEnabled); if (callResp == "OK") return true; } catch (Exception exc) @@ -9650,12 +9473,12 @@ namespace IOB_WIN_FORM.Iob // prova ad avviare/chiudere PODL relativo (eventualmente duplicandolo) dtEve = $"{dtStartPOdl:yyyyMMddHHmmssfff}"; dtCurr = $"{DateTime.Now:yyyyMMddHHmmssfff}"; - await callUrl($"{urlOdlStartFromPOdl}{idxPOdl}&dtEve={dtEve}&dtCurr={dtCurr}", false); + await utils.callUrlAsync($"{urlOdlStartFromPOdl}{idxPOdl}&dtEve={dtEve}&dtCurr={dtCurr}"); // ora chiamo chiusura... dtEve = $"{dtEndPOdl:yyyyMMddHHmmssfff}"; dtCurr = $"{DateTime.Now:yyyyMMddHHmmssfff}"; - await callUrl($"{urlPODLClose}{idxPOdl}&dtEve={dtEve}&dtCurr={dtCurr}", false); + await utils.callUrlAsync($"{urlPODLClose}{idxPOdl}&dtEve={dtEve}&dtCurr={dtCurr}"); }) .GetAwaiter() .GetResult(); @@ -9676,14 +9499,15 @@ namespace IOB_WIN_FORM.Iob /// private async Task RecipeRemoveWeekStatus(string keyReq) { - string fullKey = GetWeekStatsKey(); - var okHashDict = redisMan.redRemoveHashField(fullKey, keyReq); - // rileggo status hash - Dictionary currDict = redisMan.redGetHashDict(fullKey); + string fullKey = GetWeekStatsKey(); + var okHashDict = redisMan.redRemoveHashField(fullKey, keyReq); + // rileggo status hash + Dictionary currDict = redisMan.redGetHashDict(fullKey); // invio ANCHE in MP-IO l'update delle info... string remUrl = urlSetHashDict; string dictPayload = JsonConvert.SerializeObject(currDict); - await callUrlWithPayloadAsync(remUrl, dictPayload, true); + await utils.callUrlAsync(remUrl, dictPayload); + //await callUrlWithPayloadAsync(remUrl, dictPayload, true); //await callUrlWithPayloadAsync(remUrl, dictPayload, false); } diff --git a/IOB-WIN-FORM/Iob/Simula.cs b/IOB-WIN-FORM/Iob/Simula.cs index c7105df3..58c82e1b 100644 --- a/IOB-WIN-FORM/Iob/Simula.cs +++ b/IOB-WIN-FORM/Iob/Simula.cs @@ -1603,10 +1603,10 @@ namespace IOB_WIN_FORM.Iob // PONTE SYNC/ASYNC: Ora sw.Stop() aspetterà la fine reale dell'operazione Task.Run(async () => { - var rawListArt = await callUrl(urlGetCurrArt, false); - var rawListDOSS = await callUrl(urlGetCurrDOSS, false); - var rawListPODL = await callUrl(urlGetNextPODL, false); - var rawLVFasi = await callUrl(urlGetListValFasiPodl, false); + var rawListArt = await utils.callUrlAsync(urlGetCurrArt); + var rawListDOSS = await utils.callUrlAsync(urlGetCurrDOSS); + var rawListPODL = await utils.callUrlAsync(urlGetNextPODL); + var rawLVFasi = await utils.callUrlAsync(urlGetListValFasiPodl); if (!string.IsNullOrEmpty(rawListArt)) { @@ -1754,9 +1754,9 @@ namespace IOB_WIN_FORM.Iob // PONTE SYNC/ASYNC: Ora sw.Stop() aspetterà la fine reale dell'operazione Task.Run(async () => { - var rawListArt = await callUrl(urlGetCurrArt, false); - var rawListDOSS = await callUrl(urlGetCurrDOSS, false); - var rawListPODL = await callUrl(urlGetNextPODL, false); + var rawListArt = await utils.callUrlAsync(urlGetCurrArt); + var rawListDOSS = await utils.callUrlAsync(urlGetCurrDOSS); + var rawListPODL = await utils.callUrlAsync(urlGetNextPODL); if (!string.IsNullOrEmpty(rawListArt)) { try diff --git a/refactoring_wip.md b/refactoring_wip.md index 50a604df..a8bbed85 100644 --- a/refactoring_wip.md +++ b/refactoring_wip.md @@ -12,17 +12,25 @@ Extract infrastructure and helper components from `Generic.cs` to improve modula - [ ] Implement a singleton/service-based `CommunicationService` using `HttpClient`. - [ ] **Italian Commenting Requirement**: All new/modified code comments must be in Italian. -### 2. Redis Service Extraction -- [ ] Encapsulate all `redisMan` calls into a `RedisService`. -- [ ] Define a clean interface for key/value and hash operations. +### 2. Redis Service Extraction (COMPLETED) +- [x] Encapsulate all `redisMan` calls into a `RedisService`. +- [x] Define a clean interface for key/value and hash operations. +- [x] **Refactored**: Moved semantic key construction from `RedisService` to `BaseObj` to eliminate redundant service layer. ### 3. Data Serializer Extraction - [ ] Move all `JsonConvert` and custom string formatting (e.g., `qEncodeFLog`, `qEncodeIN`) to a `DataSerializer` service. - [ ] Centralize `CultureInfo.InvariantCulture` usage. +### 4. BaseObj Simplification (NEW) +- [ ] Analyze `BaseObj` responsibilities (State, Config, Messaging, Diagnostics). +- [ ] Identify candidates for extraction into specialized services (e.g., `QueueManager`, `ConfigService`, `DiagnosticService`). +- [ ] Implement extraction of identified components. + ## Progress Log - [x] Created WIP document. -- [x] Analyzed `Generic.cs` for Phase 1 candidates (found ~200 occurrences of key patterns). -- [ ] Started Extraction of `CommunicationService`. -- [ ] Started Extraction of `RedisService`. -- [ ] Started Extraction of `DataSerializer`. +- [x] Analyzed `Generic.cs` for Phase 1 candidates. +- [x] Completed Redis Semantic Refactoring: + - Moved key construction logic from `RedisService` to `BaseObj`. + - Refactored `Generic.cs` to use `BaseObj` semantic methods. + - Eliminated redundant `RedisService.cs`. +- [ ] Started Analysis of `BaseObj` to identify extraction candidates.