To make sure incoming messages satisfy the defined protocols, the messages are checked and validated by parsers. Parsers contain combinations of FIX dictionaries.
Message types include:
- Session level messages - Responsible for message delivery, data integrity control, and establishing and terminating the connection, (i.e., Logon, Logout, Heartbeat, Test Request, Resend Request, Sequence Reset, and Reject).
- Application level messages - Responsible for information related to the business context.
Out-of-the-box standard dictionaries
When using out-of-the-box standard dictionaries, list files with dictionaries in the DictionariesFilesList parameter in the engine.properties file.
This parameter contains a list of XML file names with standard FIX protocol dictionaries delimited by semicolon.
Out-of-the-box standard dictionary versions include:
FIX4x = All-in-one versions of FIX protocol (session & application level messages).
If needed, FIX4x can be used along with the FIXT1.1 session-level FIX version.
- FIX5x, FIXLatest = Application-level versions of FIX protocol that should be used with FIXT11 for session-level messages.
Assigning a parser
The parser identifies the FIX dictionary used for a given session, i.e., the value of the 'id' parameter in a dictionary XML file.
To assign a parser to a specific session in the FIXEdge.properties file, add the parser 'id' to the Version parameter (FixLayer.FixEngine.Session.Session_Name.Version).
The diagram below describes how to use the out-of-the-box standard dictionary versions FIX4x and FIX5x.
User-defined custom dictionaries
Custom protocol based on FIX4x
The following diagram illustrates an example of how to use a FIX44Custom.xml dictionary based on the FIX44 FIX protocol version.
- id="FIX44Custom" - The version name defined by the user that should be used as the Version parameter for the session.
- fixversion="4.4" - A reference to the basic FIX protocol version.
Custom protocol based on FIX5x
The following diagram illustrates an example of a session using a custom dictionary (myfixparser.xml) based on the FIX50 FIX protocol version.
- id="MYFIXPARSER" - The version name defined by the user that should be used as the Version parameter for the session.
- fixversion="5.0" - A reference to the basic FIX protocol version.
The diagram also illustrates using multiple application protocol versions for one session.
FIX connection establishment schema
For FIX5x and later, upon receiving a Logon message from the initiator, FIXEdge C++ validates the value of the 1137 tag (1408 tag for custom versions):
- If the value of tag 1137 in the received Logon message is the same as the value of the corresponding session's Version parameter configured in the FIXEdge.properties file, FIXEdge sends a Logon to the counterparty in response.
Otherwise, FIXEdge C++ sends a Logout with [Text(58)=invalid DefaultApplVerID(1137)] and terminates the transport layer connection.
- If there is more than one application protocol version in a session's Version parameter, the first in the list is considered as the default application FIX version and is compared to the 1137 tag of the Logon message according to the logic described above for a single value.
- If the value of the 1137 tag is not specified, FIXEdge C++ sends a Logout with [Text(58)= The following required tag(s) is missing: tag 1137. Error(s) in message A with sequence number <sequence_number>] and terminates the transport layer connection.