Each client uses an assigned IP address and port to establish a TCP/IP session with the server.The client initiates a session at the start of each trading day by sending the Logon message within a two heartbeats interval. The client identifies itself with the username field. The server validates the username and password of the client.
Two Heartbeats IntervalIf the client does not initiate the session by sending the Logon message within a two heartbeats interval of establishing the session, the connection is dropped by the server.
Client and server use the Heartbeat message to exercise the communication line during periods of inactivity and to verify that the interfaces at each end are available.The heartbeat interval is three seconds. The server sends a Heartbeat anytime it has not transmitted a message during a heartbeat interval. The client is expected to employ the same logic. The servers sends a logout and breaks the TCP/IP connection with the client if it detects inactivity for five heartbeat intervals. The client is expected to employ similar logic if inactivity is detected on the part of the server.
The heartbeat interval is three seconds. The servers sends a logout and breaks the TCP/IP connection with the client if it detects inactivity for five heartbeat intervals.
Field
Name
Type
Length
Description
Heartbeat
10
40
Connection Heartbeat, may also be sent in response to a TestRequest
TestRequest is used to force a heartbeat from the opposing application. The message is useful for checking sequence numbers or verifying communication line status. The opposite application responds to the TestRequest with a Heartbeat.
Field
Name
Type
Length
Description
TestRequest
11
40
TestRequest to request heartbeat, receiver should respond with Heartbeat message with the provided test request id included
The client may send a ResendRequest to initiate retransmission of previously sent messages. Like the FIX protocol, GapFill messages are sent in place of admin and missing/unavailable messages.
Field
Name
Type
Length
Description
ResendRequest
102
40
Resend request.
1
fromSequenceNumber
uint32
4
Sequence number of first message to resend.
2
toSequenceNumber
uint32
4
Sequence number of last message to resend (or 0 to resend all messages from formSequenceNumber).
The client is expected to terminate each connection at the end of each trading day before the server shuts down. The client terminates a connection by sending the Logout message. The server responds with a Logout message if the client’s request is successful. The client then breaks the TCP/IP connection with the server.All open TCP/IP connections are terminated by the server when it shuts down (a Logout is sent). Under exceptional circumstances, the server may initiate the termination of a connection during the trading day by sending the Logout message. Either party that wishes to terminate the connection may wait for the heartbeat interval duration before breaking the TCP/IP connection to ensure that the other party received the Logout message.
The server sends a Reject message in response to a client message which is well-formed but is of unknown type or has an invalid blockLength for the type/version.
Field
Name
Type
Length
Description
Reject
210
104
Reject message from gateway to client
1
refSequenceNumber
uint32
4
Sequence number of the rejected message from client.