Hi all,
I have issues with FieldList forth method. The below doesn't work as expected :
const int type = updateMsg.getUpdateTypeNum();
if (type == INSTRUMENT_UPDATE_QUOTE )
decode_quote( updateMsg.getPayload().getFieldList());
void AppClient::decode_quote( const FieldList& fl ) {
enum { TIMESTAMP_FID=5, BID_FID=22, ASK_FID=25, BIDSIZE_FID=30, ASKSIZE_FID=31 };
cout << fl.toString()<<endl;
fl.forth(TIMESTAMP_FID);
const FieldEntry& ft = fl.getEntry();
const OmmTime& time = ft.getTime();
fl.reset();
if ( fl.forth(BID_FID) ) {
const FieldEntry& fb = fl.getEntry();
cout << " bid: " << fb.getReal().getAsDouble();
fl.forth(BIDSIZE_FID);
const FieldEntry& fbs = fl.getEntry();
cout << " size: " << fbs.getReal().getAsDouble(); fl.reset();
}
else if(fl.forth(ASK_FID)) {
const FieldEntry& fa = fl.getEntry();
cout << " ask: " << fa.getReal().getAsDouble();
fl.forth(ASKSIZE_FID);
const FieldEntry& fas = fl.getEntry();
cout << " size: " << fas.getReal().getAsDouble(); fl.reset();
}
cout << " tm: "<< (UInt64)time.getHour() << ":" << (UInt64)time.getMinute() << ":" << (UInt64)time.getSecond() << endl; }
the above never prints ASK price & size, only the bid side but fl.toString() prints both.
Am I doing something wrong ?
Thanks