Salve a tutti, chiedo il vostro aiuto in quanto mi sono impantanato nella ragionata
Sto cercando di creare un sistema in cui ho un'array di oggetti che attivano un'uscita e dopo tot tempo la disattivano.
Le richieste arrivano tramite delle GET HTTP (numero uscita + tempo di attivazione), di conseguenza gli oggetti dovrebbero essere accodati in ordine in base alle richieste e quando il tempo "scade" dovrebbero portare l'uscita ad OFF e rimuoversi dalla "coda" in modo da lasciare inalterato l'ordine delle richieste già presenti.
Provo a spiegarmi meglio, l'oggetto "OperationOut" dovrebbe essere fatto circa cosi:
int OutIndex // indice che indica qual'è l'uscita coinvolta
unsigned long OutTimeOn // millis() di quando è stata eseguito l'ON dell'uscita
int Timeout // tempo in millisecondi che mi indica dopo quanto impostare ad OFF l'uscita
bool OutState // true se ON, false se OFF
funzione Switch(ON/OFF, time) // attiva o disattiva l'uscita OutIndex e aggiorna OutState, OutTimeOn, Timeout
Una volta ricevuta la richiesta HTTP, dovrei instanziare l'oggetto, chiamare la funzione Switch che attiva l'uscita corrispondente e aggiungerlo all'array.
All'inizio del loop dovrei poi ciclare tutti gli oggetti presenti nell'array e fare lo Switch(off) per quelli il cui tempo è scaduto, e rimuoverli dall'array.
Ora, il mio problema principale è che non so come creare un'array dinamico di oggetti che possono essere rimossi "nel mezzo" quando uno di questi finisce il tempo.
Ho provato a cercare nel forum e su google ma non ho trovato una soluzione valida, alcuni consigliano di creare array fissi di oggetti, altri dei puntatori ma anche qui non ho capito come posso rimuovere gli elementi a metà array.
Se devo per forza avere un'array fisso, in teoria con una coda di 100 richieste dovrei averne abbastanza, ma vorrei evitare che ad ogni loop vengano ciclati 100 elementi perchè questo mi sballerebbe tutti i tempi.
Avete qualche dritta?
Grazie mille!