@@ -206,27 +206,31 @@ def _handle_remote_error(self, event):
206
206
return exception
207
207
208
208
def _select_pattern (self , event ):
209
- for pattern in patterns .patterns_list :
209
+ for pattern in self ._context .hook_client_patterns_list (
210
+ patterns .patterns_list ):
210
211
if pattern .accept_answer (event ):
211
212
return pattern
212
- msg = 'Unable to find a pattern for: {0}' .format (event )
213
- raise RuntimeError (msg )
213
+ return None
214
214
215
215
def _process_response (self , request_event , bufchan , timeout ):
216
- try :
217
- reply_event = bufchan .recv (timeout )
218
- pattern = self ._select_pattern (reply_event )
219
- return pattern .process_answer (self ._context , bufchan , request_event ,
220
- reply_event , self ._handle_remote_error )
221
- except TimeoutExpired :
216
+ def raise_error (ex ):
222
217
bufchan .close ()
223
- ex = TimeoutExpired (timeout ,
224
- 'calling remote method {0}' .format (request_event .name ))
225
218
self ._context .hook_client_after_request (request_event , None , ex )
226
219
raise ex
227
- except :
228
- bufchan .close ()
229
- raise
220
+
221
+ try :
222
+ reply_event = bufchan .recv (timeout = timeout )
223
+ except TimeoutExpired :
224
+ raise_error (TimeoutExpired (timeout ,
225
+ 'calling remote method {0}' .format (request_event .name )))
226
+
227
+ pattern = self ._select_pattern (reply_event )
228
+ if pattern is None :
229
+ raise_error (RuntimeError (
230
+ 'Unable to find a pattern for: {0}' .format (request_event )))
231
+
232
+ return pattern .process_answer (self ._context , bufchan , request_event ,
233
+ reply_event , self ._handle_remote_error )
230
234
231
235
def __call__ (self , method , * args , ** kargs ):
232
236
timeout = kargs .get ('timeout' , self ._timeout )
0 commit comments