From ce409ed097a4eef13a8d834be68ac088180a1044 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sun, 3 Nov 2019 13:49:36 +0100 Subject: [PATCH] Messo conda concorrente... --- IOB-WIN/DATA/CONF/MAIN.ini | 2 +- IOB-WIN/IobGeneric.cs | 66 ++++++++++++++++++++++++++++++-------- Jenkinsfile | 2 +- 3 files changed, 55 insertions(+), 15 deletions(-) diff --git a/IOB-WIN/DATA/CONF/MAIN.ini b/IOB-WIN/DATA/CONF/MAIN.ini index 5d8d8e0a..5327409f 100644 --- a/IOB-WIN/DATA/CONF/MAIN.ini +++ b/IOB-WIN/DATA/CONF/MAIN.ini @@ -47,7 +47,7 @@ CMDIOB2CALL=/IOB/getIob2call?GWIP= ; SIMULAZIONE verso server ufficio -STARTLIST=SIMUL_01 +STARTLIST=SIMUL_01,SIMUL_02,SIMUL_03,SIMUL_04 ;STARTLIST=SIM_DP_02 ;STARTLIST=SIMUL_03,SIMUL_04,SIMUL_05,SIMUL_06,SIMUL_07,SIMUL_08 diff --git a/IOB-WIN/IobGeneric.cs b/IOB-WIN/IobGeneric.cs index 859a2deb..7125e18d 100644 --- a/IOB-WIN/IobGeneric.cs +++ b/IOB-WIN/IobGeneric.cs @@ -3,6 +3,7 @@ using Newtonsoft.Json; using NLog; using System; using System.Collections; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; @@ -36,7 +37,7 @@ namespace IOB_WIN /// /// Indicazione VETO check status IOB x evitare loop troppo stretti... /// - public static DateTime dtVetoCheckIOB = DateTime.Now; + public DateTime dtVetoCheckIOB = DateTime.Now; /// /// Contapezzi attuale /// @@ -116,19 +117,19 @@ namespace IOB_WIN /// /// Oggetto della coda degli elementi letti (e non ancora trasmessi) /// - public Queue QueueIN = new Queue(); + public ConcurrentQueue QueueIN = new ConcurrentQueue(); /// /// Oggetto della coda degli elementi letti di tipo FluxLog (e non ancora trasmessi) /// - public Queue QueueFLog = new Queue(); + public ConcurrentQueue QueueFLog = new ConcurrentQueue(); /// /// Coda valori simulazione deterministica... /// - public Queue QueueSIM = new Queue(); + public ConcurrentQueue QueueSIM = new ConcurrentQueue(); /// /// Coda valori letti x DEBUG... /// - public Queue QueueDebug = new Queue(); + public ConcurrentQueue QueueDebug = new ConcurrentQueue(); /// /// valore booleano di check se sia in fase di COMUNICAZIONE ATTIVA con il PLC/NC @@ -437,9 +438,15 @@ namespace IOB_WIN // svuoto code se richiesto if (resetQueue) { + QueueIN = new ConcurrentQueue(); + QueueFLog = new ConcurrentQueue(); + QueueSIM = new ConcurrentQueue(); +#if false + // non permresso clear --> creo nuove code! QueueIN.Clear(); QueueFLog.Clear(); - QueueSIM.Clear(); + QueueSIM.Clear(); +#endif } // imposto contatori blink a zero... i_counters = new int[32]; @@ -781,7 +788,12 @@ namespace IOB_WIN while (QueueIN.Count > 0) { // INVIO COMUNQUE...!!! - sendToMoonPro(urlType.SignIN, QueueIN.Dequeue()); + string valore = ""; + QueueIN.TryDequeue(out valore); + sendToMoonPro(urlType.SignIN, valore); +#if false + sendToMoonPro(urlType.SignIN, QueueIN.Dequeue()); +#endif } parentForm.displayTaskAndLog("Svuotamento FORZATO coda FluxLOG..."); // se ho + di 2 elementi in coda --> uso invio JSON in blocco... @@ -793,10 +805,15 @@ namespace IOB_WIN // se ho + di maxJsonData elementi --> invio un set di dati alla volta if (QueueFLog.Count > maxJsonData) { + string currVal = ""; // prendoi primi maxJsonDataValori for (int i = 0; i < maxJsonData; i++) { - listaValori.Add(QueueFLog.Dequeue()); + QueueIN.TryDequeue(out currVal); + listaValori.Add(currVal); +#if false + listaValori.Add(QueueFLog.Dequeue()); +#endif } sendDataBlock(urlType.FLog, listaValori); } @@ -807,17 +824,25 @@ namespace IOB_WIN // invio sendDataBlock(urlType.FLog, listaValori); // svuoto! - QueueFLog.Clear(); + QueueFLog = new ConcurrentQueue(); +#if false + QueueFLog.Clear(); +#endif } } // HO FINITO invio di FLog... } else { + string currVal = ""; while (QueueFLog.Count > 0) { // INVIO COMUNQUE...!!! - sendToMoonPro(urlType.FLog, QueueFLog.Dequeue()); + QueueFLog.TryDequeue(out currVal); + sendToMoonPro(urlType.FLog, currVal); +#if false + sendToMoonPro(urlType.FLog, QueueFLog.Dequeue()); +#endif } } } @@ -2186,7 +2211,10 @@ namespace IOB_WIN if (QueueIN.Count > 0) { // recupero ed aggiorno ULTIMO valore... - lastSignInVal = QueueIN.Dequeue(); + QueueIN.TryDequeue(out lastSignInVal); +#if false + lastSignInVal = QueueIN.Dequeue(); +#endif // se ERA online provo if (MPOnline) { @@ -2265,10 +2293,15 @@ namespace IOB_WIN // se ho + di maxJsonData elementi --> invio un set di dati alla volta if (QueueFLog.Count > maxJsonData) { + string currVal = ""; // prendoi primi maxJsonDataValori for (int j = 0; j < maxJsonData; j++) { - listaValori.Add(QueueFLog.Dequeue()); + QueueFLog.TryDequeue(out currVal); + listaValori.Add(currVal); +#if false + listaValori.Add(QueueFLog.Dequeue()); +#endif } sendDataBlock(urlType.FLog, listaValori); } @@ -2279,14 +2312,21 @@ namespace IOB_WIN // invio sendDataBlock(urlType.FLog, listaValori); // svuoto! + QueueFLog = new ConcurrentQueue(); +#if false QueueFLog.Clear(); - // HO FINITO invio di FLog... +#endif } } else { // INVIO SINGOLO...!!! + string currVal = ""; + QueueFLog.TryDequeue(out currVal); + sendToMoonPro(urlType.FLog, currVal); +#if false sendToMoonPro(urlType.FLog, QueueFLog.Dequeue()); +#endif } } else diff --git a/Jenkinsfile b/Jenkinsfile index d818ad0d..a1a85bd0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ pipeline { /* calcolo numero versione... diverso x branch MASTER/DEVELOP */ script { - withEnv(['NEXT_BUILD_NUMBER=486']) { + withEnv(['NEXT_BUILD_NUMBER=487']) { // env.versionNumber = VersionNumber(versionNumberString : '2.3.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) env.versionNumber = VersionNumber(versionNumberString : '2.3.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') env.APP_NAME = 'MAPO-IOB-WIN'