@@ -33,6 +33,9 @@ def next_sequence_number(self):
33
33
self .__sequence_number += 1
34
34
return self .__sequence_number
35
35
36
+ def reset_sequence (self ):
37
+ self .__sequence_number = 0
38
+
36
39
37
40
class LogonMessage (BaseMessage ):
38
41
def __init__ (self , username , password , heartbeat = 3 , session = None ):
@@ -108,12 +111,15 @@ class Client(asyncore.dispatcher):
108
111
logging_level = logging .INFO
109
112
authorized = False
110
113
commission = 0.000030
114
+ buffer = ''
115
+ address = None
111
116
112
117
def __init__ (self , address : tuple , user , password , session , log_file = None ):
113
118
asyncore .dispatcher .__init__ (self )
114
119
self .session = session
115
120
self .user = user
116
121
self .password = password
122
+ self .address = address
117
123
118
124
self .symbol_requests = []
119
125
self .market_last_request = 1
@@ -142,9 +148,14 @@ def __init__(self, address: tuple, user, password, session, log_file=None):
142
148
Message .Types .ExecutionReport : [self .execution_report_handler ],
143
149
}
144
150
151
+ self .do_connect ()
152
+
153
+ def do_connect (self ):
154
+ self .session .reset_sequence ()
155
+ self .authorized = False
145
156
self .buffer = ''
146
157
self .create_socket (socket .AF_INET , socket .SOCK_STREAM )
147
- self .connect (address )
158
+ self .connect (self . address )
148
159
149
160
def add_handler (self , h_type , h_callback ):
150
161
if h_type not in self .handlers :
@@ -185,6 +196,7 @@ def handle_read(self):
185
196
if len (self .buffer ) == 0 :
186
197
self .logger .info (self .session .sender_id + ' disconnected.' )
187
198
self .close ()
199
+ self .do_connect ()
188
200
return
189
201
190
202
while True :
0 commit comments