@@ -137,7 +137,7 @@ def decode_data(self, data):
137137 }
138138 return {}
139139
140- def processIncomingPacket (self , data , callback , slave , ** kwargs ):
140+ def processIncomingPacket (self , data , callback , slave , tid : int = None , ** kwargs ):
141141 """Process new packet pattern.
142142
143143 This takes in a new request packet, adds it to the current
@@ -148,12 +148,6 @@ def processIncomingPacket(self, data, callback, slave, **kwargs):
148148
149149 The processed and decoded messages are pushed to the callback
150150 function to process and send.
151-
152- :param data: The new packet data
153- :param callback: The function to send results to
154- :param slave: Process if slave id matches, ignore otherwise (could be a
155- list of slave ids (server) or single slave id(client/server)
156- :param kwargs:
157151 """
158152 if not isinstance (slave , (list , tuple )):
159153 slave = [slave ]
@@ -165,7 +159,7 @@ def processIncomingPacket(self, data, callback, slave, **kwargs):
165159 if len (self ._buffer ):
166160 # Possible error ???
167161 if self ._header ["len" ] < 2 :
168- self ._process (callback , error = True )
162+ self ._process (callback , tid , error = True )
169163 break
170164 if not self .checkFrame ():
171165 Log .debug ("Frame check failed, ignoring!!" )
@@ -176,9 +170,9 @@ def processIncomingPacket(self, data, callback, slave, **kwargs):
176170 Log .debug ("Not a valid slave id - {}, ignoring!!" , header_txt )
177171 self .resetFrame ()
178172 continue
179- self ._process (callback )
173+ self ._process (callback , tid )
180174
181- def _process (self , callback , error = False ):
175+ def _process (self , callback , tid , error = False ):
182176 """Process incoming packets irrespective error condition."""
183177 data = self .getRawFrame () if error else self .getFrame ()
184178 if (result := self .decoder .decode (data )) is None :
@@ -187,7 +181,10 @@ def _process(self, callback, error=False):
187181 raise InvalidMessageReceivedException (result )
188182 self .populateResult (result )
189183 self .advanceFrame ()
190- callback (result ) # defer or push to a thread?
184+ if tid and tid != result .transaction_id :
185+ self .resetFrame ()
186+ else :
187+ callback (result ) # defer or push to a thread?
191188
192189 def resetFrame (self ):
193190 """Reset the entire message frame.
0 commit comments