[Quickfix-developers] bug in MessageCracker.h
Brought to you by:
orenmnero
From: Scott K. <sc...@la...> - 2010-06-30 02:29:58
|
I found a bug (more like a typo) in MessageCracker.h -- The version that is generic to all FIX versions. The "const" keyword is where it shouldn't be: The crack with signature: (line 109) void crack( Message& message, const SessionID& sessionID, const BeginString& beginString ) calls the other cracks but with signatures such as (line 114, 116, 118, 120, 122, 124) ((FIX40::MessageCracker&)(*this)).crack((const FIX40::Message&) message, sessionID); That const keyword there is constifying the messages, causing the toApp and toAdmin message handlers to always use const versions of the onMessage functions, causing my onMessage handlers to mysteriously not be called whenever I drop the const keyword. On another note, it seems odd to me -- though is managable -- that incoming and outgoing messages get distinguished based on whether my onMessage handlers are const or not. That is onMessage(FIX42::Logon & message, ...) catches outgoing logon messages whereas onMessage(const FIX42::Logon & message, ...) catches incoming ones. Perhaps it would be more clear if two different names for the onMessage function were used, like onMessageTo and onMessageFrom. Then the const keyword could be stuck in someone's onMessageTo handler just to emphasize that he didn't want to change that message. But this is just a thought, I suppose this change would break people's code. Am I doing things right? I could submit a patch, it's just those six lines. version 1.13.3 Scott |