Ho un'app che funziona come un server TCP e accetta connessioni multiple. Ogni connessione viene effettuata da un dispositivo distinto, con un ID univoco (l'ID viene segnalato dal dispositivo in due messaggi diversi in base al suo protocollo, ma ciò è meno importante).
In questo momento, ogni volta che viene stabilita una connessione, la mia app crea un nuovo elenco di parser per un gruppo di messaggi che il dispositivo può inviare, ma a quel punto non sa ancora quale dispositivo è stato connesso. Il problema è che diversi messaggi possono essere analizzati prima che venga stabilita l'identità del dispositivo. Poiché i dispositivi possono disconnettersi e riconnettersi durante la vita dell'app, ci sono oggetti longevo (statistiche del dispositivo e vari altri dati) che non dovrebbero essere scartati ogni volta che un dispositivo si disconnette e quindi devono essere ricollegati come consumatori della pipeline del parser una volta che l'ID del dispositivo è stabilito. In alternativa, se un dispositivo non è mai stato collegato in precedenza, le sue nuove istanze diventeranno longevi.
Qualcuno ha un'idea generale di come dovrebbe essere riorganizzata questa applicazione? Ad esempio, una idea era quella di avvolgere gli oggetti a lungo termine in proxy e quindi avere la possibilità di cambiare l'implementazione sottostante con un'altra istanza, una volta collegato un nuovo dispositivo. Per renderlo più chiaro, questi oggetti non sono singleton pubblici (multitoni), ma c'è ovviamente un dizionario (per ID) da qualche parte nel livello aziendale per tenere traccia dei dati per dispositivo.
Tutto ciò sembra inutilmente complesso, ma il codice (come sempre) ovviamente si è evoluto nel tempo e ora sento che non riesco a vedere la foresta tra gli alberi.