예제 #1
0
 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
     }
 }
예제 #2
0
 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);
 }
예제 #3
0
 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);
 }
예제 #4
0
 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);
     }
     ;
 }