OnixS C++ Eurex T7 Market and Reference Data (EMDI, MDI, RDI, EOBI) Handlers  17.0.1
API documentation
Frequently Asked Questions

What is the recommended udpSocketBufferSize?

A: It can depend on the environment; our test shows that 8Mb is enough. So the best way is to do a few tests with different values, then to choose.

Is there any notification given to the application when a packet gap is detected by Onix?

A: When a gap is detected DepthListener::onDepthReset is fired to notify that market data is not valid.

Is using startRecoveryOnPacketGap recommended?

A: It depends on the usage of the handler. If startRecoveryOnPacketGap is true, "Pessimistic approach" is used. Please see Section 7.1 "Detecting duplicates and gaps by means of the packet header" of Market and Reference Data Interfaces Manual for details.

    The packet header allows receiving applications to identify identical packets between Service A and
    Service B. This is achieved by a simple memory comparison on the first 9 bytes for Eurex EMDI or 8
    Bytes for Eurex MDI of a datagram containing SenderCompId and PacketSeqNum as shown in figure 20,
    Structure of the packet header for Eurex EMDI and figure 21, Structure of the packet header for Eurex
    MDI and Eurex RDI. Another important function of the packet header is to identify gaps by means of the
    PacketSeqNum which can be retrieved just by decoding the packet header.

    This means that field PacketSeqNum can be used not only to detect duplicates but also to detect missing packets.
    PacketSeqNum is a Byte vector and therefore not stop bit encoded as per the FAST specification.
    The packet header itself does not contain any product information. In order to find out which product is missing,
    the product level sequence number must be used in addition to the packet level sequence number; the packet needs
    to be decoded further down to the message level. This leaves participants with
    two recovery options when a gap in the PacketSeqNum's of the packet header is detected.
    Example:
    A single multicast address carries products FDAX and FGBL, but the participant is only interested in
    FGBL.
    I. Pessimistic approach: The receiving application assumes that FGBL is part of the missing packet: It immediately starts recovery actions 13 just by decoding the packet header.
    -- Advantage: Recovery is triggered immediately when observing a missing PacketSeqNum without decoding the entire message.
    -- Disadvantage: The recovery might not be necessary if FGBL is not part of the message which is inside the lost packet.
    II. Optimistic approach: The receiving application assumes that FGBL is not part of the missing packet:
    It waits for the next message on the same service and decodes the packet up to the message level to find out if a packet for FGBL has been lost before triggering recovery actions.
    -- Advantage: This approach allows the participant to recover only products of interest.
    -- Disadvantage: The receiving application needs to wait for the next message. However, the next packet may not contain a message for the product in question.

Please, compare the advantages and disadvantages of both approaches and choose the best for your needs.