[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
|