QuickFix MessageCracker:如何决定应该实现哪些消息?

时间:2014-04-10 13:07:38

标签: c++ quickfix fix-protocol

我正在使用C ++中的QuickFix为代理FIX平台实现Initiator方面。他们的FIX规范提供了他们支持的消息列表;登录,心跳和其他消息。

MessageCracker(Fix 4.2)为同一类型提供了两个重载。例如

virtual void onMessage( ResendRequest&, const FIX::SessionID& ) {}

virtual void onMessage( const ResendRequest&, const FIX::SessionID& ) {}

修改 我有一个派生自ApplicationMessageCracker的类,它从crack(FIX::Message&)内调用toAdmin(),导致调用onMessage()(没有{{1}的版本}})。

我的困惑与我应该覆盖哪个const版本有关? onMessage()或其他人的那个?

2 个答案:

答案 0 :(得分:2)

virtual void onMessage( const ResendRequest&, const FIX::SessionID& )

crack传递const引用,因此将调用上述函数。此外,除非您有非常具体的需求,否则您不应该更改收到的FIX消息。 onMessage用于接收消息,而不是发送消息。

答案 1 :(得分:1)

  

据我所知,第一个用于发送,第二个用于接收。

那是完全错误的。 都不用于发送。

老实说,我不确定为什么两者都存在,但我会使用const版本,正如DumbCoder所说。修改收到的消息并没有什么好的理由。

另一个注意事项,因为你的意图在你的问题中并不清楚:
不要为管理员消息实施OnMessage(例如,登录,心跳等)。如果您需要对这些做出反应(而您可能没有),请使用FromAdmin()回调。