Come posso gestire i timeout in un'applicazione di rete.
Sto implementando un sistema di provisioning su un server Linux, il codice è enorme quindi ho intenzione di inserire l'algoritmo, funziona come in questo
- Leggi i comandi di provisioning dal file
- Invia ad un altro server usando TCP
- Salva la richiesta in hash.
- Ricevi la risposta allora
- se la risposta è stata ricevuta, rimuovere la richiesta dall'hash
- se la risposta non riuscita è stata ricevuta, riprova il messaggio
Il problema in cui mi trovo ora è quando il programma non ha ricevuto la risposta per un motivo di timeout, quindi la richiesta attenderà una risposta per sempre e non verrà ritentata.
E tieni presente che invierò centinaia di comandi e devo monitorare i comandi di timeout per tutti loro.
Ho provato a usare il timer, ma questo non ha aiutato perché avrò molti timer di attesa e non sono sicuro che questo sia un buon modo per farlo.
La domanda è: come posso salvare il messaggio in qualche struttura dati e controllare se rimuovere o riprovare più tardi quando non c'è risposta dall'altra parte?
Tieni presente che sono disposto a modificare l'algoritmo in base a qualsiasi cosa tu suggerisca che potrebbe gestire i timeout.