static void Trattieni(JsonDataRecord jsonData) { // infila il dato in una pila pila.Push(jsonData); // se la pila raggiunge una certa dimensione crea un file coi dati e svuota la pila if (pila.Count >= limiteRecord) { Archiviatore.Push(ref pila); // la pila viene passata per iferimento per poter essere manipolata } }
public static bool fileInArchivio => _fileSalvati > 0; // indicatore di file in attesa di essere inviati public static bool Push(ref Stack pila) { // creiamo un file che contiene la pila di record e lo salviamo // N.B. Al momento della lettura viene anche post-incrementato il contatore dei file creati using (StreamWriter scriviFile = new StreamWriter($"pila{++_fileSalvati}.txt")) { scriviFile.WriteLine(JsonDataRecord.StackToString(pila)); Console.WriteLine("creato il file: “pila" + _fileSalvati + "”"); } // dopodiché, se siamo riusciti a salvare il file, la pila viene svuotata pila.Clear(); return(true); }
static public bool InoltraRecord(JsonDataRecord jsonData) { Console.WriteLine("Cerco di inviare: " + jsonData); // se la connessione è attiva, spediamo il dato al server if (connessioneAttiva) { InoltraAlServer(jsonData); return(true); } // altrimenti la rete non è raggiungibile e memoriziamo i dati in locale Trattieni(jsonData); return(false); }
static void InoltraAlServer(JsonDataRecord jsonData) { // non ci sono impedimenti e quindi spediamo il nostro dato al server if (!Spedisci("{ \"VettoreDati\": [ " + jsonData.ToString() + " ]}")) { pila.Push(jsonData); } // poi verifichiamo se la pila ha altri record da inviare if (pila.Count > 0) { // spediamone il contenuto al server e poi svuotiamo la pila if (Spedisci(JsonDataRecord.StackToString(pila))) { pila.Clear(); } else { return; // se ci sono problemi non se ne fa niente } } // verifichiamo se ci sono file salvati da inviare while (Archiviatore.fileInArchivio) { // cerchiamo di spedire l'ultimo file recuperato if (Spedisci(Archiviatore.Pull())) { Archiviatore.ThrowLast(); } else { return; // se ci sono problemi non se ne fa niente } // // recuperiamo i dati archiviati // string stringaPila = Archiviatore.Pop(); // // e spediamo al server anche i file archiviati // Spedisci(stringaPila); } ; }