Pattern ottimale per l'analisi del flusso di rete delimitato (ad esempio nuova linea)

0

Sto cercando ottimali per la manutenzione / facile programmazione e modelli eleganti per analizzare i flussi di rete delimitati, ad es. protocolli come SMTP. Alcune delle preoccupazioni che ho sempre avuto sono:

  • come reagire quando una chiamata recv (2) restituisce 0 - la necessità di tenere traccia dello stato per determinare se nessun dato è arrivato o nessun altro dato arriverà
  • Cosa succede se in un pacchetto, arrivano più campi delimitati (ad esempio intestazioni di richiesta / risposta HTTP)

In genere ho finito per costruire un buffer e analizzare il buffer fino al delimitatore, gestendolo quindi separatamente, ma è sempre inelegante. Esiste una soluzione Knuth-ian o GOF elegante?

Per ottimale / elegante intendo manutenzione / programmabilità piuttosto che uso hard-core.

    
posta Konrads 15.11.2017 - 12:41
fonte

1 risposta

2

Chiedere "ottimale" è, in una parola, senza senso. Come ha chiesto @MetaFight, cosa stai ottimizzando e cosa è elegante?

ottimale

  • La leggibilità
  • Velocità
  • Robustezza
  • Linee di codice

e una serie di altre cose.

Design Patterns

  • Macchina a stati finiti: implementa come un insieme di macchine a stati gerarchici
  • Lexer / Parser - questo è un tipo specifico di macchine a stati gerarchici che è spesso supportato da librerie di generazione di codice, come yacc / lex, bison, ecc.
  • Monade di stato - Un'altra implementazione dei modelli di macchine a stati.

Elegance

Una domanda a risposta aperta con un sacco di gusto personale. Personalmente, vorrei iniziare con un'implementazione in Scala, utilizzando un approccio Monad di stato, con valori di Either che consentono di acquisire informazioni sugli errori per facilitare il reporting e il ripristino. Il tuo chilometraggio può variare (YMMV).

    
risposta data 15.11.2017 - 14:43
fonte

Leggi altre domande sui tag