Я работаю над реализацией стороны инициатора для платформы FIX брокера, использующей QuickFix в C ++. Их спецификация FIX предоставляет список сообщений, которые они поддерживают; Вход в систему, Heartbeat и другие сообщения.
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()
(версия без const
).
Моя путаница была связана с тем, что какая версия onMessage()
Я должен переопределить? Тот, с const FIX::Message&
или другой?
virtual void onMessage( const ResendRequest&, const FIX::SessionID& )
crack
передает ссылку на const, поэтому будет вызвана вышеуказанная функция. Более того, вы не должны менять полученное FIX
сообщение, если у вас нет очень конкретных потребностей. onMessage
для получения сообщений, а не отправки.
Я понимаю, что первый — для отправки, а второй — для получения.
Это совершенно неправильно. ни для отправки.
Если честно, я не уверен, почему оба существуют, но я бы использовал const
версия, как предполагает DumbCoder. На самом деле нет веских причин для изменения полученного сообщения.
И еще одно замечание, потому что ваши намерения не ясны в вашем вопросе:
Не осуществлять OnMessage
для сообщений администратора (например, логин, сердцебиение и т. д.). Если вам нужно реагировать на это (а вы, вероятно, нет), используйте FromAdmin()
Перезвоните.