@@ -437,6 +437,17 @@ def _result(self, value):
437437        fut .set_result (value )
438438        return  fut 
439439
440+     @staticmethod  
441+     def  finish_socket_func (trans , key , ov ):
442+         try :
443+             return  ov .getresult ()
444+         except  OSError  as  exc :
445+             if  exc .winerror  in  (_overlapped .ERROR_NETNAME_DELETED ,
446+                                 _overlapped .ERROR_OPERATION_ABORTED ):
447+                 raise  ConnectionResetError (* exc .args )
448+             else :
449+                 raise 
450+ 
440451    def  recv (self , conn , nbytes , flags = 0 ):
441452        self ._register_with_iocp (conn )
442453        ov  =  _overlapped .Overlapped (NULL )
@@ -448,17 +459,7 @@ def recv(self, conn, nbytes, flags=0):
448459        except  BrokenPipeError :
449460            return  self ._result (b'' )
450461
451-         def  finish_recv (trans , key , ov ):
452-             try :
453-                 return  ov .getresult ()
454-             except  OSError  as  exc :
455-                 if  exc .winerror  in  (_overlapped .ERROR_NETNAME_DELETED ,
456-                                     _overlapped .ERROR_OPERATION_ABORTED ):
457-                     raise  ConnectionResetError (* exc .args )
458-                 else :
459-                     raise 
460- 
461-         return  self ._register (ov , conn , finish_recv )
462+         return  self ._register (ov , conn , self .finish_socket_func )
462463
463464    def  recv_into (self , conn , buf , flags = 0 ):
464465        self ._register_with_iocp (conn )
@@ -471,17 +472,7 @@ def recv_into(self, conn, buf, flags=0):
471472        except  BrokenPipeError :
472473            return  self ._result (b'' )
473474
474-         def  finish_recv (trans , key , ov ):
475-             try :
476-                 return  ov .getresult ()
477-             except  OSError  as  exc :
478-                 if  exc .winerror  in  (_overlapped .ERROR_NETNAME_DELETED ,
479-                                     _overlapped .ERROR_OPERATION_ABORTED ):
480-                     raise  ConnectionResetError (* exc .args )
481-                 else :
482-                     raise 
483- 
484-         return  self ._register (ov , conn , finish_recv )
475+         return  self ._register (ov , conn , self .finish_socket_func )
485476
486477    def  recvfrom (self , conn , nbytes , flags = 0 ):
487478        self ._register_with_iocp (conn )
@@ -491,35 +482,15 @@ def recvfrom(self, conn, nbytes, flags=0):
491482        except  BrokenPipeError :
492483            return  self ._result ((b'' , None ))
493484
494-         def  finish_recv (trans , key , ov ):
495-             try :
496-                 return  ov .getresult ()
497-             except  OSError  as  exc :
498-                 if  exc .winerror  in  (_overlapped .ERROR_NETNAME_DELETED ,
499-                                     _overlapped .ERROR_OPERATION_ABORTED ):
500-                     raise  ConnectionResetError (* exc .args )
501-                 else :
502-                     raise 
503- 
504-         return  self ._register (ov , conn , finish_recv )
485+         return  self ._register (ov , conn , self .finish_socket_func )
505486
506487    def  sendto (self , conn , buf , flags = 0 , addr = None ):
507488        self ._register_with_iocp (conn )
508489        ov  =  _overlapped .Overlapped (NULL )
509490
510491        ov .WSASendTo (conn .fileno (), buf , flags , addr )
511492
512-         def  finish_send (trans , key , ov ):
513-             try :
514-                 return  ov .getresult ()
515-             except  OSError  as  exc :
516-                 if  exc .winerror  in  (_overlapped .ERROR_NETNAME_DELETED ,
517-                                     _overlapped .ERROR_OPERATION_ABORTED ):
518-                     raise  ConnectionResetError (* exc .args )
519-                 else :
520-                     raise 
521- 
522-         return  self ._register (ov , conn , finish_send )
493+         return  self ._register (ov , conn , self .finish_socket_func )
523494
524495    def  send (self , conn , buf , flags = 0 ):
525496        self ._register_with_iocp (conn )
@@ -529,17 +500,7 @@ def send(self, conn, buf, flags=0):
529500        else :
530501            ov .WriteFile (conn .fileno (), buf )
531502
532-         def  finish_send (trans , key , ov ):
533-             try :
534-                 return  ov .getresult ()
535-             except  OSError  as  exc :
536-                 if  exc .winerror  in  (_overlapped .ERROR_NETNAME_DELETED ,
537-                                     _overlapped .ERROR_OPERATION_ABORTED ):
538-                     raise  ConnectionResetError (* exc .args )
539-                 else :
540-                     raise 
541- 
542-         return  self ._register (ov , conn , finish_send )
503+         return  self ._register (ov , conn , self .finish_socket_func )
543504
544505    def  accept (self , listener ):
545506        self ._register_with_iocp (listener )
@@ -610,16 +571,7 @@ def sendfile(self, sock, file, offset, count):
610571                        offset_low , offset_high ,
611572                        count , 0 , 0 )
612573
613-         def  finish_sendfile (trans , key , ov ):
614-             try :
615-                 return  ov .getresult ()
616-             except  OSError  as  exc :
617-                 if  exc .winerror  in  (_overlapped .ERROR_NETNAME_DELETED ,
618-                                     _overlapped .ERROR_OPERATION_ABORTED ):
619-                     raise  ConnectionResetError (* exc .args )
620-                 else :
621-                     raise 
622-         return  self ._register (ov , sock , finish_sendfile )
574+         return  self ._register (ov , sock , self .finish_socket_func )
623575
624576    def  accept_pipe (self , pipe ):
625577        self ._register_with_iocp (pipe )
0 commit comments