Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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
languagecpp
       Engine::Session* session= Engine::FixEngine::singleton()->createSession(&application, "TargetCompID2", "SenderCompID2",
            Engine::FIX50,
            &params, 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
languagecpp
        std::auto_ptr<Engine::FIXMessage> pMessage2(pSI2->newSkel("X"), session->getAppVer());