The Lab

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from this space and version 1.5.14

This page sets out the key aspects of establishing and managing sessions between a Whisperer Enterprise Client and a Feed HandlerGateway.

Table of Contents


Logon

A FIX session is only fully established when the following stages are complete:

...

Tip
In this event, the Customer should contact MF Support Contact in order to confirm the validity of the specified credentials.

...

Otherwise the Logon Service will hand off the connection to the target Feed HandlerGateway. From this point on, the Client is communicating directly with the Feed Handler the Gateway itself,  neither the LogonService, nor any other processes are involved.

...

All Whisperer Enterprise messages are exchanged over TCP, with connectivity maintained directly between the Client and Feed Handler and Gateway - so message delivery and ordering are both guaranteed, whilst the socket connection is operating correctly.

...

Info
titlePreviously Sent Messages

The MF FH Gateway guarantees persistence of sent outbound messages for possible resend for a minimum period of three heartbeat intervals, allowing for detection of dead connections as per 63805411 Session Monitoring, below.


Info
titleUnsent Messages

Any unsent messages will be persisted indefinitely until either:

  • End of Trading Week reset, or
  • Client Logon and Client Session Synchronisationwith ResetSeqNumFlag = FALSE or unset, and subsequent User Session Synchronisation.
  • Client Logon with ResetSeqNumFlag = TRUE. This flag may be used at Client discretion, but is recommended for UAT or PROD Pricing sessions only.



The table below specifies what messages are to be persisted and resent when necessary, as opposed to being gap-filled.

It will be noted that that all  messages that represent stateful events are persisted and resent by the MF Feed Handler MF Gateway - but only these. It is the responsibility of the Client application to determine the appropriate response.

For sequence gaps identified on the outbound Client Session, it is entirely the responsibility of the Client application to determine which Optional  message types are indeed to be persisted for possible resend. This is typically most important for Maker clients accepting or rejecting orders against Taker Venues, but other scenarios may need to be considered.

...

Table Filter
inversefalse,false
default,
cell-width150,150
userfilterSent By,Persisted
datepatternyy-mm-dd
id1571392653103_486306577
labelsSent By‚Persisted
order0,1


MessageSent ByReceived ByPersisted
LogonClient (Both)
Feed Handler
GatewayNo
LogonResponse
Feed Handler
GatewayClient (Both)No
LogoutClient (Both)
Feed Handler
GatewayNo
LogoutResponse
Feed Handler
GatewayClient (Both)No
SequenceResetGapFillClient (Both)
Feed Handler
GatewayNo
Feed Handler
GatewayClient (Both)No
HeartbeatClient (Both)
Feed Handler
GatewayNo
Feed Handler
GatewayClient (Both)No
TestRequestClient (Both)
Feed Handler
GatewayNo
Feed Handler
GatewayClient (Both)No
SecurityStatus
Feed Handler
GatewayClient (TAKER)No
UserRequestClient (Both)
Feed Handler
GatewayNo
UserNotification
Feed Handler
GatewayClient (Both)No
ErrorReport
GatewayClient (Both)Yes
BusinessMessageRejectGateway
Feed Handler
Client (Both)Yes
MarketDataRequestClient (TAKER)
Feed Handler
GatewayNo
MarketDataRequestReject
Feed Handler
GatewayClient (Both)No
MarketDataIncrementalRefresh
Feed Handler
GatewayClient (Both)No
QuoteRequestClient (TAKER)
Feed Handler
GatewayOptional
Feed Handler
GatewayClient (MAKER)Yes
QuoteClient (MAKER)
Feed Handler
GatewayNo
Feed Handler
GatewayClient (TAKER)No
MassQuoteClient (MAKER)
Feed Handler
GatewayNo
Feed Handler
GatewayClient (TAKER)No
QuoteCancelClient (MAKER)
Feed Handler
GatewayNo
Feed Handler
GatewayClient (TAKER)No
QuoteResponseClient (MAKER)
Feed Handler
GatewayOptional
Feed Handler
GatewayClient (TAKER)Yes
Client (TAKER)
Feed Handler
GatewayOptional
Feed Handler
GatewayClient (MAKER)Yes
NewOrderMultilegClient (TAKER)
Feed Handler
GatewayOptional
Feed Handler
GatewayClient (MAKER)Yes
OrderCancelReplaceRequestClient (TAKER)
Feed Handler
GatewayOptional
OrderCancelRequestClient (TAKER)
Feed Handler
GatewayOptional
OrderCancelReject
Feed Handler
GatewayClient (TAKER)Yes
OrderTimeout
Feed Handler
GatewayClient (Both)Yes
ExecutionReportClient (MAKER)
Feed Handler
GatewayYes
Feed Handler
GatewayClient (TAKER)Yes
ExecutionAckClient (TAKER)
Feed Handler
GatewayOptional
Feed Handler
GatewayClient (MAKER)Yes



User Session Synchronisation

...

The MFAPI Client initiates a new session with a Logon message - populating NextExpectedMsgSeqNum which contains the next msgSeqNum value that the Client expects to receive from the Whisperer Feed HandlerGateway

The Whisperer Feed Handler Gateway validates the sequence number value as expected by the MFAPI Client as follows:

  • If the Client msgSeqNum is lower than the Feed HandlerGateway's expected value, or the Client is expecting a sequence number higher than the Feed HandlerGateway's next-to-be-assigned msgSeqNum, then this is an unrecoverable error and the Feed Handler Gateway will abort the session with a Logout message (using it's next sequence number).

    Tip
    The Customer should contact MF Support Contact to agree the correct resolution actions.


  • Otherwise, the Feed Handler the Gateway will issue a LogonResponse message - populating NextExpectedMsgSeqNum which contains the next msgSeqNum value that it expects to receive from the Client.

...

  • If the Client is expecting a sequence number lower than the Feed HandlerGateway's next-to-be-assigned msgSeqNum (as used in the preceding Logon response), then the message gap is resolved by the Feed Handler the Gateway with SequenceResetGapFill messages and/or the resending of persisted messages as necessary. The preceding LogonResponse will be gap-filled over. A concluding TestRequest will be issued by the Feed Handler Gateway to confirm the end of the replay.

    Warning

    Should a Client specify a next-expected inbound sequence number too low (e.g. expecting '1' on re-logon just prior to weekly trading session close), then the Feed Handler the Gateway will service most of the range to correct with a SequenceResetGapFill. For the more recent messages that are still persisted, these will be processed as normal.

    The Feed Handler The Gateway will not resend a week's worth of persisted messages. Refer to 63805411 above for more detail


...

  • When the MFAPI Client receives the Feed HandlerGateway's LogonResponse message, the Client must behave in a similar manner, based on the returned NextExpectedMsgSeqNum value. Any message gap must be resolved by the Client with SequenceResetGapFill messages and/or the resending of persisted messages as necessary. The preceding Logon must be gap-filled over. The Feed Handler Gateway will issue a concluding TestRequest to confirm the end of the replay.

...

  • Irrespective of whether repays are required in either direction or not, the Feed Handler Gateway will always issue a further TestRequest to verify overall completion of the session synchronisation. Thus the Client may be expected to respond to one, two or three TestRequest messages in total to successfully Logon.

...



Gliffy Diagram

...

titleDeprecated Synchronisation Model

...

Prior to Release 2020.11.16.WE, the Whisperer Enterprise Client synchronisation model mandated that the Client signal its completion of session synchronisation with a TestRequest. On receipt of this TestRequest, the Whisperer Feed Handler would respond with the necessary Heartbeat and then signal its own completion of session synchronisation with a TestRequest in the opposite direction. 

This is now deprecated and the Feed Handler issues all required TestRequest messages.

The Client may of course elect to issue TestRequest message at any time, as part of their own session verification logic.

In the sequence diagram below, the deprecated model is in red, whilst the replacement model is in green.

Gliffy Diagram
displayNameUser Session Synchronziation
nameUser Session Synchronziation



Warning

The Feed Handler Gateway TestRequest messages and Client Heartbeat (response) messages are required as verification that no sequence number gaps remain in either direction.

The Client should only proceed with new messages when these have been processed correctly.

Any  Any new (i.e. not SequenceResetGapFill or SequenceResetGapFill or resent) messages sent by the MFAPI Client prior to the required Heartbeat responses will result in ErrorReport notifications.

...

Should the Client attempt to establish a second  (additional) session using the same credentials as of a currently-active Client session, then it will be rejected. The original session will be unaffected.



 

Gliffy Diagram
displayName4.0 Schema_2ndLogon
name4.0 Schema_2ndLogon

Session Monitoring

...

For inbound Heartbeat and TestRequest messages sent by the Client , the Feed Handler the Gateway will allow a fixed maximum allowed message transmission time (MaxTx), currently set to one second, before treating the message as 'missed'. This is used to allow for some degree of hysteresis WRT message delivery latencies.

The Client may specify it's own MaxTx value and logic when monitoring inbound messages sent by the Feed HandlerGateway.

In both cases only the local clock is used as reference.

...

Once the Client has successfully established a session with the Whisperer Feed Handler Gateway (i.e. on dispatch of the first Heartbeat message in response to the end of synchronisation TestRequest), subsequent Heartbeat messages are sent by each party as follows:

  • The HeartBtInt value is specified by the Client in their Logon message and subsequently used by both sides of the Client Session, i.e. the Feed Handler the Gateway will always use the interval specified by the Client.
  • The heartbeat interval timer should be reset after every message is transmitted (not just heartbeats).
  • On expiry of the heartbeat interval timer, a Heartbeat message must be sent.

...

Warning
A heartbeat is deemed to have been missed if it is not received within HeartBtInt + MaxTx seconds and must result in the monitoring party issuing a TestRequest.




Gliffy Diagram
displayName4.0 Schema_Heartbeat_3
name4.0 Schema_Heartbeat_3

...

Tip

TestRequest messages may be used to obtain an approximate indication of message round-trip times between the MFAPI Client and the Whisperer Feed HandlerGateway.


Warning
If no Heartbeat response is received within HeartBtInt + MaxTx seconds of the issuance of the TestRequest, then the party must abort the session with a Logout message.


Gliffy Diagram
displayName4.0 Schema_TestRequest
name4.0 Schema_TestRequest

...

Warning

All messages received by the Whisperer Feed Handler Gateway (from either the Client or the Venue) between the exchange of Logout and LogoutResponse messages will result in ErrorReport messages being sent to the Client.

...