QuickFix MessageCracker: как решить, какие сообщения следует реализовывать?

Я работаю над реализацией стороны инициатора для платформы 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& или другой?

0

Решение

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

crack передает ссылку на const, поэтому будет вызвана вышеуказанная функция. Более того, вы не должны менять полученное FIX сообщение, если у вас нет очень конкретных потребностей. onMessage для получения сообщений, а не отправки.

2

Другие решения

Я понимаю, что первый — для отправки, а второй — для получения.

Это совершенно неправильно. ни для отправки.

Если честно, я не уверен, почему оба существуют, но я бы использовал const версия, как предполагает DumbCoder. На самом деле нет веских причин для изменения полученного сообщения.

И еще одно замечание, потому что ваши намерения не ясны в вашем вопросе:
Не осуществлять OnMessage для сообщений администратора (например, логин, сердцебиение и т. д.). Если вам нужно реагировать на это (а вы, вероятно, нет), используйте FromAdmin() Перезвоните.

1

По вопросам рекламы [email protected]