...
In order to use Myricom DBL it is required to utilize their specific API. Because of that, we added and described its distinct support.
...
FIX Engine doesn't start with getaddrinfo() failed error.
...
Most likely this error means a DNS configuration issue, so it should be checked.
Also, it can be fixed by resolving the hostname in hosts configuration file.
Method getGroup() throw the exception "Tag is not defined" for a message with FIX50+ version
For example, one wants to get access to the group for a message with version FIX 5.0 or higher (i.e. for a version using transport dictionaries). In the example below, it's a group NoMDEntries (268) for message Market Data - Incremental Refresh (X)
Code Block | ||
---|---|---|
| ||
Engine::Session* session= Engine::FixEngine::singleton()->createSession(&application, "TargetCompID2", "SenderCompID2",
Engine::FIX50,
¶ms, Engine::persistent_storageType, Engine::FIXT11_TCP);
std::auto_ptr<Engine::FIXMessage> pMessage2(session->newSkel("X"));
try
{
Engine::FIXGroup* pMessage2->getGroup(FIXFields::NoMDEntries);
}
catch (const Utils::Exception& ex)
{
// ...
}
|
This code will throw an exception: "Tag is not defined: 268"
Root cause:
By default, if the application version isn't passed to Engine::Session::newSkel (...) method then FIX Antenna uses a transport dictionary (for example fixdict11.xml) for message creation. However, in the transport dictionary, there are no business-level tags such as NoMDEntries (268) so an exception about missing tag is thrown.
Solution:
The fix protocol version of application-level tags should be passed for creating or parsing messages for FIX.5.0 versions or higher.
The user should pass a specific Engine::FIXVersion or result of Engine::Session::getAppVer() as an argument. For example:
Code Block | ||
---|---|---|
| ||
std::auto_ptr<Engine::FIXMessage> pMessage2(pSI2->newSkel("X"), session->getAppVer()); |