Page tree

Versions Compared

Key

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

...

Note

FIX Antenna ANSI C is discontinued starting version 2.18.1.

FIX Antenna 2.27.1

January 30, 2020

The most major features of this release are Scheduler component and flexible affinity mask setup, see below. Scheduler component allows user to build and executes flexibly defined schedules and override actions execution if required, see the documentation

This is the last release that supports Centos 6 and Visual Studio compilers prior to Visual Studio 2015. So, please be informed that centos 6 configurations along with Visual Studio prior 2015 will be discontinued starting next release. Windows configurations will be reduced to only one - Visual studio 2015 in particular since starting 2015 studio ABI  compatibility is maintained across compilers versions, So library built with 2015 studio can be used with 2015/2017/2019. Linux configurations will be reduced to only three: Centos 7 gcc4.8, Centos 7 gcc5.2, Ubuntu gcc6.1

Breaking changes

  • (SD4906754) Port accepted the connection is passed to the public API method:

    Code Block
    languagecpp
    virtual bool onIncomingConnection( const FIXMessage& logonMsg, const IPAddr& remoteAddr, int remotePort, int localPort )


    B2BITS_Events.h:

    The following methods signatures have been changes:

    Code Block
    languagecpp
    titleB2BITS_Events.h
    NewIncomingConnection( const std::string& address, int port );
    NewIncomingConnectionError( const std::string& address, int port, const std::string& msg );
    SessionLogonError( const SessionId& sessionId, const std::string& address, int port, const std::string& aReason );
    SessionLogonWarning(const SessionId& sessionId, const std::string& address, int port, const std::string& aReason);
    SessionWasRejected( const SessionId& sessionId, const std::string& address, int port, const std::string& aReason );

    with

    Code Block
    languagecpp
    titleB2BITS_Events.h
    NewIncomingConnection( const std::string& remoreAddress, int remotePort, const std::string& localAddress, int localPort );
    NewIncomingConnectionError( const std::string& remoreAddress, int remotePort, const std::string& localAddress, int localPort, const std::string& msg );
    SessionLogonError( const SessionId& sessionId, const std::string& remoreAddress, int remotePort, const std::string& localAddress, int localPort, const std::string& aReason );
    SessionLogonWarning(const SessionId& sessionId, const std::string& remoreAddress, int remotePort, const std::string& localAddress, int localPort, const std::string& aReason);
    SessionWasRejected( const SessionId& sessionId, const std::string& remoreAddress, int remotePort, const std::string& localAddress, int localPort, const std::string& aReason );
    Info

    Since the methods signatures were changed, user's application modification is required.

  • Type MessageStorageType has been changed to class. So MessageStorageType can't be used as a key in 'switch' anymore. User should use 'if..else if ...' instead of 'switch'. User application may require minor changes.

Features and improvements

  • Scheduler component is implemented. 
  • SSLCACertificate is mandatory if peer certificate validation is enabled.
  • Improve logging of errors for unhandled exceptions generating business rejects during processing the message.
  • Parameter Session.Default.SocketTcpMaxSeg is added. It configures the TCP_MAXSEG parameter of the session's TCP/IP connection. It is applicable to initiator sessions only,
  • Added callbacks onAfterMessageIsParsed and onBeforeMessageIsSerialized to FA.NET
  • Improved FIX message parser scalability in a multi-threaded environment.
  • Improved performance and reduced response time of the Session::put method in aggressive_send mode in case if the message can't be sent on spot(engine overload, broken connection, etc).
  • CPU resources consumption is optimized while receiving in even mode( using threads pool) that causes response time decreasing on message path from input to Session::process method.
  • Session parameter "Role" is case insensitive in engine.properties now,
  • New timestamp formats %date{FIXus}, %date{FIXns} %date{ISO8601us}, %date{ISO8601ns} with micro and nano precisions are added for application log output. see: Support of microseconds and nanoseconds timestamps in application logs
  • FIX Antenna accepts Hexadecimal values as a CPU affinity mask.

  • Affinity mask for CPU cores can be specified as comma-separated, semicolon-separated lists or as a range see details (Core binding and affinity mask usage in FIX Antenna C++ products).

    Info

    NOTE: The curly braces should be used in case of a single number configuration in order to keep backward compatibility. By default affinity parameter values are treated as affinity mask in decimal format. It the value is set in curly braces than cores number is used instead of the mask.

  • Improve description of AggressiveReceiveDelay parameter
  • EchoServer sample is redesigned to utilize new Engine::SessionsManager::onSessionTerminated callback.

API improvements

  • Engine::SessionsManager callbacks sink is extended with onSessionTerminated that is called when a session termination happens. This allows user application to react and force the session to reconnect if desired. See documentation.

API changes

Logging improvements

  • (SD4906754) Extended logging of incoming connection event

    text has been changed:

    Previous message

    <severity> <timestamp> <thread> [Engine] - New incoming connection was detected (from <target ip>:<target port>).

    Current message

    <severity> <timestamp> <thread> [Engine] - New incoming connection was detected (from <target ip>:<target port> to <local ip>:<local port>).

  • Improved logging of errors for unhandled exceptions generating business rejects during processing the message.

    text has been changed:


    Previous message

    [ERROR] <timestamp> <thread> [Engine] - Session <session> : Exception in Application::process() - "<exception text>"

    Current message

    [ERROR] <timestamp> <thread> [Engine] - Session <DEF, ABC> : Exception in Application::process() - "The message 'New Order - Single' (D) with sequence number 4 can't be processed properly because it causes an exception '<exception text>' at the application level. A business level reject message (j) will be sent to the counterparty."

  • Improved text of FIX Dictionary load warnings

    text has been changed:


    Previous message

    [WARN] <timestamp> <thread> [Engine] - Found duplicate in c:\Downloads\FIX_Antenna_Cpp_2.25.1_274\samples\EchoServer\bin\.\../../../data/fixdic40.xml: / 6

    Current message

    [WARN] <timestamp> <thread> [Engine] - Found duplicated value = '6' for node 'fielddef' with attributes { name='TrdRegPublicationReason' tag='2670' type='int' } in the dictionary fixdic40.xml

  • Improved exception in the logs for loading dictionary failure

    text has been changed:


    Previous message

    [WARN] <timestamp> <thread> [Engine] - 

    Current message

    [ERROR] <timestamp> <thread> [Engine] - FixEngine::init: Cannot load message '<msg>' in the protocol '<version>'. Duplicated tag in the message is found. Possible reason is field used outside the block. Tag: <tag>

  • A WARN record is logged in case when affinity configuration can't be applied
  • FIX Antenna prints the resulted affinity configuration in the log.

Fixed bugs

  • (SD4016506) Fixed a bug when session keeps disconnected state for several minutes after disconnection.
  • ConnectToGateway sample segfaults on Linux if the target endpoint is not available.
  • Fixed a typo in the thread name: was 'dispacher', replaced with 'dispatcher'.
  • Fixed a bug when SSL Ciphers list can't be passed to SSLContextConfigurator.
  • Fixed a bug when additional dictionary adds repeating groups incorrectly if leading tag is already present in the message.
  • Fixed a bug when additional dictionary adds repeating groups incorrectly if leading tag of the nested group becomes starting tag of the parent group.
  • Session's storage files occupy unnecessary large space in certain cases.
  • Certificate path was passed into SSL context instance setup routine instead of ciphers list in some cases.
  • FIX Antenna postpones the creation of dedicated sending threads for aggressive send mode instead of creating them on session get connected.
  • EPMBFIXSUP-3642, An initiator doesn't reestablish connection after receiving logout.
  • Fixed incorrect session state transition to WaitForConfirmLogout causing delays on Engine shutdown if DelayedProcessing.MaxDeliveryTries property was configured.
  • Fixed a bug when SourceIPAddress parameter works incorrectly via administrative session

Connectivity updates

  • CME iLink DropCopy dictionaries includes all changes till 31th of December  2019
  • FIX 5.0 SP2 dictionary has been updated with 248-252 Extension Packs

Documentation

FIX Antenna 2.26.0

January 23, 2019


New Features and improvements

...