In un mio progetto di hobby, una "casa intelligente" per il controllo delle luci, sto progettando di creare una funzione che spenga tutte le luci in un determinato momento della giornata. Ci sono anche molte altre funzionalità che vengono eseguite su comando.
Ho creato una serie di eventi che vengono controllati su un intervallo di (n) secondi. Il programma esegue semplicemente iterazioni su ogni evento nello stack, chiede loro di valutare se devono essere eseguiti e quindi continua.
Per gli eventi "on command", semplicemente scarto l'evento fuori dallo stack dopo che sono stati eseguiti.
Tuttavia, per la mia funzione pianificata ho bisogno che l'evento si valuti, venga eseguito se l'ora del giorno è corretta, e poi torna nello stack - senza sparare nuovamente alla successiva iterazione.
I miei problemi sono che non posso dire all'evento di funzionare esattamente alle 12:00:00, poiché l'intervallo per il controllo degli eventi non è esatto (questo potrebbe indicare altri problemi nella mia logica?). Né posso usare una bandiera per indicare che l'evento è stato eseguito, poiché è previsto che venga eseguito nuovamente il giorno successivo (in 24 ore).
Per dare un contesto: l'idea alla base dello stack di eventi è quella di fornire una coda per i comandi in arrivo che arrivano attraverso un servizio REST (con più utenti).
Aggiornamento : una possibile soluzione potrebbe essere semplicemente quella di riprogrammare l'attività dopo che è stata completata. Comunque sto lasciando la domanda aperta un po 'più a lungo nel caso qualcuno abbia una soluzione alternativa.