ich eine FIX-Engine basiert auf Quickfix/N writting, die für den Handel Exekutionen (ExecutionReport) hören und sie in einer Datenbank speichern.QuickFix optionale Felder überprüfen Wert vorhanden
einen Feldwert von der API Anfordern wirft einen FieldNotFoundException, wenn der Wert nicht in der empfangenen Nachricht ist. Ein Aufruf von executionReport.Account löst beispielsweise die Ausnahme aus, wenn das Konto nicht vorhanden ist.
Da einige Felder sind optional, ich habe ausdrücklich für die Existenz des Feldwertes zu überprüfen, bevor es zu bekommen. Ich habe zwei Möglichkeiten dafür:
Möglichkeit 1: executionReport.IsSetAccount() ? executionReport.Account : null;
Möglichkeit 2:
try
{
return executionReport.Account.getValue();
}
catch (Exception e)
{
return null;
}
Die erste Option ist sauber, aber ich finde es wirklich schwer, kann der zweite in eine verallgemeinern Hilfsfunktion aber es geht gegen die API Philosophie und ich habe das Gefühl ich mache etwas falsch.
Dann meine Frage ist:
- Gibt es eine anderen sauberen/richtigen Weg, um den Job zu tun?
Oder ist mein Verständnis des Protokolls/API völlig falsch? Ich habe das Gefühl, ich bekomme das Problem nicht richtig.
Vielen Dank
ich denke, das Problem bekommen - einige Felder sind optional. Nun, das ist eine Eigenschaft des FIX-Protokolls. Es ist das gleiche für fast jede FIX-Nachricht. Es gibt Transaktionen viele verschiedene Arten von ... – rupweb