Sto sviluppando un modello di chiamata telefonica e penso al modo migliore per progettare l'interfaccia.
Un'idea di base è che una chiamata ha un identificatore di chiamata univoco. Ho un elenco di chiamate e trovare una chiamata specifica è facile da callid.
Ogni chiamata ha zero o più parti. Una parte ha un identificativo del dispositivo (ad esempio l'estensione 201) e uno stato. Ad esempio, la mia estensione 201 può essere avvisata o stabilita o qualsiasi altra cosa.
Ho una classe per rappresentare una chiamata che ha funzioni per trovare una parte nella chiamata, ho le seguenti funzioni findxxx:
party* find_party_by_dn(const std::string& dn) const;
int find_parties_by_dn(const std::string& dn, std::list<party*> pties) const;
find_party_by_dn sembra ok, ma ha un problema nel senso che una chiamata può avere 2 parti con lo stesso identificatore di dispositivo. Ad esempio, un utente può mettere una chiamata in attesa e fare una nuova chiamata di consultazione su un altro dispositivo. Nel qual caso la chiamata ha una festa con dn 201 in stato di attesa e un'altra parte con dn 201 e composizione di stato per esempio.
Quindi, se uso la funzione find_party_by_dn, verrà restituito solo il primo party nell'elenco con questo dn.
Quindi ho pensato ah, perché non restituire (bene tramite riferimento) un elenco di parti con un dato dn. Da qui la seconda funzione. Sembra un'interfaccia utile? Potrebbe essere migliorato?
Ho anche queste funzioni:
party* find_party_by_state(const std::string& dn, pstate state) const;
party* find_party_by_states(const std::string& dn, int states) const;
In questo caso, il chiamante deve specificare uno stato specifico o un numero di stati, ad es. stato1 | Stato2
Sto cercando feedback su questa interfaccia. Sembra logico? Potrebbe essere migliorato per renderlo più user friendly o robusto?