我正在使用C ++中的QuickFix为代理FIX平台实现Initiator方面。他们的FIX规范提供了他们支持的消息列表;登录,心跳和其他消息。
MessageCracker(Fix 4.2)为同一类型提供了两个重载。例如
virtual void onMessage( ResendRequest&, const FIX::SessionID& ) {}
和
virtual void onMessage( const ResendRequest&, const FIX::SessionID& ) {}
修改
我有一个派生自Application
和MessageCracker
的类,它从crack(FIX::Message&)
内调用toAdmin()
,导致调用onMessage()
(没有{{1}的版本}})。
我的困惑与我应该覆盖哪个const
版本有关? onMessage()
或其他人的那个?
答案 0 :(得分:2)
virtual void onMessage( const ResendRequest&, const FIX::SessionID& )
crack
传递const引用,因此将调用上述函数。此外,除非您有非常具体的需求,否则您不应该更改收到的FIX
消息。 onMessage
用于接收消息,而不是发送消息。
答案 1 :(得分:1)
据我所知,第一个用于发送,第二个用于接收。
那是完全错误的。 都不用于发送。
老实说,我不确定为什么两者都存在,但我会使用const
版本,正如DumbCoder所说。修改收到的消息并没有什么好的理由。
另一个注意事项,因为你的意图在你的问题中并不清楚:
不要为管理员消息实施OnMessage
(例如,登录,心跳等)。如果您需要对这些做出反应(而您可能没有),请使用FromAdmin()
回调。