-
Notifications
You must be signed in to change notification settings - Fork 564
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MessageFactory group-creator can't handle DDs where a group-counter tag appears in two different places #495
Comments
Please see #528 for some further code analysis. |
Per this excellent StackOverflow answer by Ciaran McHale, this situation isn't actually FIX compliant. I may still attempt to fix it anyway, as I've now seen 2 counterparties do it. But it is not a priority, and a better first course of action is to ask your counterparty to correct their implementation. |
I hope you are going to fix this soon. Whilst this is not strictly FIX compliant to use the same group tag in different parts of a message, it does happen to be occur in Refinitv's (formally Thomposn Reuters) TRTN data dictionary, and I can't see them agreeing to change it given the large number of firms which have must have been using it for years. It is also handled perfectly well in quickfixJ, and I was hoping to port some exisitng java code to c#, but because of this issue, I am going to have to give up for the time being. |
We have the same problem with one of Bloomberg interfaces, I doubt they gonna consider making changes of their side. Looks like C++ implementation of QuickFIX doesnt have such issue. |
Ran into this while generating source for TT's DD.
The DD contains the NoSides tag in two different places (it denotes a top-level group, and a nested group inside of a different group).
In their DD:
That's totally legit as far as I know. However, the generator generates this (in Messages\FIX44\MessageFactory.cs):
That function's interface is defined in
QuickFix\IMessageFactory.cs
. Obviously it's a mistake to think that msgtype and group-counter-tag alone are enough to identify the Group.Luckily, the only user of this function is
QuickFix\Message\Message.cs -> SetGroup(...)
, so changing it should not be that disruptive.So, the tasks to solve are:
QuickFix\Message\Message.cs->SetGroup(...)
can pass an ancestry chain to the group-create methodIMessageFactory::Create/group
to take that ancestry chainQuickFix\DefaultMessageFactory.cs->Create/group
per that interface change. It will need to create the right group based on the ancestry chain.Messages\FIXxx\MessageFactory.cs->Create/group
methods. Generated methods will need to create the right group based on that ancestry chain.The text was updated successfully, but these errors were encountered: