Skip to content

Commit 5645bdc

Browse files
author
Ahmad Noman Musleh
committed
Fixed the field TestReqID naming issue
1 parent 7681607 commit 5645bdc

6 files changed

Lines changed: 27 additions & 10 deletions

File tree

ctrader_fix/client.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@
99
from ctrader_fix.fixProtocol import FixProtocol
1010

1111
class Client(ClientService):
12-
def __init__(self, host, port, ssl=False, delimiter = "", retryPolicy=None, clock=None, prepareConnection=None, numberOfMessagesToSendPerSecond=5):
12+
def __init__(self, host, port, ssl=False, delimiter = "", retryPolicy=None, clock=None, prepareConnection=None):
1313
self._runningReactor = reactor
14-
self.numberOfMessagesToSendPerSecond = numberOfMessagesToSendPerSecond
1514
self.delimiter = delimiter
1615
endpoint = clientFromString(self._runningReactor, f"ssl:{host}:{port}" if ssl else f"tcp:{host}:{port}")
1716
self._factory = Factory.forProtocol(FixProtocol, client=self)

ctrader_fix/factory.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ def __init__(self, *args, **kwargs):
88
super().__init__()
99
self.client = kwargs['client']
1010
self.delimiter = self.client.delimiter
11-
self.numberOfMessagesToSendPerSecond = self.client.numberOfMessagesToSendPerSecond
1211
def connected(self):
1312
self.client._connected()
1413
def disconnected(self, reason):

ctrader_fix/messages.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,16 @@ def __init__(self, config):
8585
super().__init__("0", config)
8686

8787
def _getBody(self):
88-
if hasattr(self, "TestReqId") is False:
88+
if hasattr(self, "TestReqID") is False:
8989
return None
90-
return f"112={self.TestReqId}"
90+
return f"112={self.TestReqID}"
9191

9292
class TestRequest(RequestMessage):
9393
def __init__(self, config):
9494
super().__init__("1", config)
9595

9696
def _getBody(self):
97-
return f"112={self.TestReqId}"
97+
return f"112={self.TestReqID}"
9898

9999
class LogoutRequest(RequestMessage):
100100
def __init__(self, config):

samples/ConsoleSample/config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@
99
"SenderSubID": "QUOTE",
1010
"TargetCompID": "cServer",
1111
"TargetSubID": "QUOTE",
12-
"HeartBeat": "30"
12+
"HeartBeat": "40"
1313
}

samples/ConsoleSample/main.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,19 @@ def send(request):
7474
"OrderCancelRequest": OrderCancelRequest,
7575
"OrderCancelReplaceRequest": OrderCancelReplaceRequest}
7676

77+
testReqId = 0
78+
7779
def executeUserCommand():
7880
try:
7981
print("\n")
80-
userInput = inputimeout("Command (ex: Help): ", timeout=30)
82+
userInput = inputimeout("Command (ex: Help): ", timeout=int(config["HeartBeat"]))
8183
except TimeoutOccurred:
82-
print("Command Input Timeout")
84+
print("Timeout, sending TestRequest (Connection will be dropped if you are not logged in yet)")
85+
testRequest = TestRequest(config)
86+
global testReqId
87+
testReqId += 1
88+
testRequest.TestReqID = testReqId
89+
send(testRequest)
8390
reactor.callLater(3, callable=executeUserCommand)
8491
return
8592
if userInput.lower() == "help":
@@ -101,12 +108,19 @@ def executeUserCommand():
101108
request = commands[command](config)
102109
setParameters(request, **parameters)
103110
send(request)
111+
print("If response message not arrived keep pressing 'Enter'")
104112
else:
105-
print("Invalid Command: ", userInput)
113+
if userInput != "":
114+
print("Invalid Command: ", userInput)
106115
reactor.callLater(3, callable=executeUserCommand)
107116

108117
def onMessageReceived(client, responseMessage): # Callback for receiving all messages
109118
print("\nReceived: ", responseMessage.getMessage().replace("", "|"))
119+
if responseMessage.getFieldValue(35) == "1":
120+
print("TestRequest received, sending back Heartbeat")
121+
heartbeat = Heartbeat(config)
122+
heartbeat.TestReqID = responseMessage.getFieldValue(112)
123+
send(heartbeat)
110124
reactor.callLater(3, callable=executeUserCommand)
111125

112126
def disconnected(client, reason): # Callback for client disconnection

samples/KleinWebAppSample/main.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ def onMessageReceived(client, responseMessage):
4747
if responseDeferred is not None:
4848
responseDeferred.callback(lastReceivedMessage)
4949
print("Received: ", lastReceivedMessage)
50+
if responseMessage.getFieldValue(35) == "1":
51+
print("TestRequest received, sending back Heartbeat")
52+
heartbeat = Heartbeat(config)
53+
heartbeat.TestReqID = responseMessage.getFieldValue(112)
54+
send(heartbeat)
5055
responseDeferred= None
5156

5257
def setParameters(request, **kwargs):

0 commit comments

Comments
 (0)