[Quickfix-developers] Parsing text field(tag=58) in QuickFix "email" message
Brought to you by:
orenmnero
From: Shubhi A. <sh...@to...> - 2020-02-06 21:58:16
|
Hi, I have created a QuickFix server and a client who are communicating with each other in Email type messages (msgType = "C"). Code on the server to create Email message: std::cout << "Creating email message" << std::endl; FIX44::Email email = FIX44::Email( FIX::EmailThreadID("abc"), FIX::EmailType(FIX::EmailType_NEW), FIX::Subject("0")); json j; j["Client_Name"] = "TESTCLIENTNAME"; j["Client_Alias"] = "TESTCLIENTNAME"; j["TimeStamp"] = "86537573786783"; //email.setField(58, "Cancel My Order!"); std::string jsonDump = j.dump(); email.setField(58, jsonDump); email.setField(33,"1"); On the client side, I am able to parse all fields except tag = 58. The onMessage function on client end looks like this: void onMessage(const FIX44::Email& message, const FIX::SessionID& sessionID) override { std::cout << "On message called" << std::endl; FIX::EmailThreadID emailThreadId; FIX::EmailType emailType; FIX::NoLinesOfText noLinesOfText; message.get(emailType); message.get(emailThreadId); int int_noLines = std::atoi(message.getField(noLinesOfText).getString().c_str()); if(emailType == FIX::EmailType_NEW) { FIX::Text text; for(int i=0; i < int_noLines; i++){ std::cout << "Hey " << i << std::endl; message.get(text); *//This line is giving compilation error* } std::cout << " Email received with type = request " << std::endl; FIX44::Email email = FIX44::Email( FIX::EmailThreadID(emailThreadId), FIX::EmailType(FIX::EmailType_REPLY), FIX::Subject("1")); try { FIX::Session::sendToTarget( email, sessionID ); std::cout << "Email response sent " << std::endl; } catch ( FIX::SessionNotFound& ) {} } } Can someone please help me to figure out how to parse the text field in the incoming email message. I am using fix44. Thanks and regards Shubhi Agarwal Core Engineering Software Developer Risk Front End, Risk Technology (India) p: +91-124-452-4911 |