Page History
This page sets out details of how the Gateway Feed Handler initiates or terminates connectivity with the target Venue. The Client initiates this behaviour via UserRequest messages.
...
- The Client first establishes connection to the Gateway Feed Handler with Logon & LogonResponse,
- The Client then instructs the Gateway Feed Handler to establish a connection to the Venue via a UserRequest (UserRequestType=LogOnUser) message.
- The Gateway Feed Handler will attempt to establish connectivity to the Venue
- Once connectivity is established, FIX Session-level messages are exchanged as necessary to address any synchronisation issues.
- The Gateway Feed Handler then notifies the client of a successful connection via a UserNotification (UserStatus=LoggedOn) message.
- Any Client pricing/trading requests sent before this will be rejected by Whisperer via ErrorReport messages.
...
For those Venues which reset FIX sessions on a weekly basis, no special action is required, as this matches the Gateway Feed Handler schedule described above.
For persisted (non-Pricing) session types where Venues reset FIX sessions on a daily basis, the Gateway Feed Handler will apply the necessary reset logic for the first successful FIX Session Logon only, at Start of Day.
For non-persisted Pricing sessions, the Gateway Feed Handler will typically reset the session on every FIX Session Logon.
...
Once instructed to do so by the Client User, the Gateway Feed Handler will attempt to logon to the Venue. Should a connection not be established immediately, it will periodically retry as follows:
- On each failed logon attempt the Gateway Feed Handler will:
- First issue an ErrorReport(Subject= VenueLogonError, Text="Venue Logon failed, waiting <RetryInterval>s before retry."), then
- wait RetryInterval seconds (> 0), and repeat.
- Once MaxAttempts (> 0) failed logons occur in a row, the Gateway Feed Handler will:
- First issue an ErrorReport(Subject= VenueLogonError, Text="Venue Logon failed, waiting <BackoffInterval>s before retry."), then
- wait BackoffInterval seconds (>= 0) and restart the cycle.
...
This behaviour applies across all GatewaysFeed Handlers, irrespective of line protocol, Maker/Taker perspective, or trading model.
...
| Tip |
|---|
Should the Client User wish to instruct the Gateway Feed Handler to cease attempting to connect to the Venue at any time during this cycle, then it may issue a UserRequest (UserRequestType=LogOffUser) message. |
...
In order to ensure that Venue-side session synchronisation issues are avoided, Whisperer implements the following policy:
...
Feed Handler Detection of Venue Sequence Number Gaps
Non-recoverable Inbound seqNum Gaps
If the incoming message has a sequence number less than expected and the PossDupFlag is not set, then a serious error has occurred. In this scenario, the Gateway Feed Handler will issue a UserNotification(UserStatus=LoggedOff, Text="Session synchronization failure.").
...
If a recoverable sequence number gap is detected on receipt of the Venue's logon response, then the Gateway Feed Handler will:
- First issue an ErrorReport(Subject= VenueSeqNumError, Text="Issuing ResendRequest."), then
- a ResendRequest will be issued.
...
As a final verification, the Gateway Feed Handler will issue a TestRequest against the Venue; receipt of the Heartbeat response triggers Whisperer to notify the Client of successful session establishment via the UserNotification(UserStatus=LoggedOn).
The Client User must therefore be capable of receiving and processing re-sent Venue messages relating to it's previous session (marked as PossResend) in the interval between the UserRequest and the UserNotification.
Venue Detection of
...
Feed Handler Sequence Number Gaps
Non-recoverable Outbound seqNum Gaps
If the GatewayFeed Handler's outgoing Logon message has a lower than expected sequence number from the Venue's perspective, then a serious error has occurred. In this scenario, the Venue will terminate the session and the Gateway Feed handler will issue a UserNotification(UserStatus=LoggedOff, Text="<Message provided by Venue>").
...
If the sequence number associated with Venue Logon message issued by the Gateway Feed Handler indicates a recoverable gap, then the Venue will typically respond with a Logon response, followed by a ResendRequest.
...
- First issue an ErrorReport(Subject= VenueSeqNumError, Text="Received ResendRequest."), then
- The gap will then be resolved via SequenceResetGapFill(s) and/or message resends, as mandated by the Venue message persistence requirements.
- Immediately after resolution of the sequence gap, Whisperer will formally Logout from the Venue and then re-Logon.
- As a final verification, the Gateway Feed Handler will issue a TestRequest against the Venue; receipt of the Heartbeat response triggers Whisperer to notify the Client of successful session establishment via the UserNotification(UserStatus=LoggedOn).
...
Any Client User messages that were delivered to the Gateway Feed Handler during Client Session synchronisation will be assigned message sequence numbers that follow sequentially from the end of the previous session. delivered to the Venue immediately on successful completion of the standard FIX Session Synchronisation.
...
| Gliffy Diagram | ||
|---|---|---|
|
The client should not attempt to send venue messages when they do not have an active venue session open.
Prior to the establishment of the venue session, or after it is terminated, any business messages sent by the client will be rejected with an ErrorReport.
...
| Note | ||
|---|---|---|
| ||
user sends initiates a transaction after after receiving a loggedout user notification |