@@ -446,6 +446,17 @@ def _result(self, value):
446446 fut .set_result (value )
447447 return fut
448448
449+ @staticmethod
450+ def finish_socket_func (trans , key , ov ):
451+ try :
452+ return ov .getresult ()
453+ except OSError as exc :
454+ if exc .winerror in (_overlapped .ERROR_NETNAME_DELETED ,
455+ _overlapped .ERROR_OPERATION_ABORTED ):
456+ raise ConnectionResetError (* exc .args )
457+ else :
458+ raise
459+
449460 def recv (self , conn , nbytes , flags = 0 ):
450461 self ._register_with_iocp (conn )
451462 ov = _overlapped .Overlapped (NULL )
@@ -457,17 +468,7 @@ def recv(self, conn, nbytes, flags=0):
457468 except BrokenPipeError :
458469 return self ._result (b'' )
459470
460- def finish_recv (trans , key , ov ):
461- try :
462- return ov .getresult ()
463- except OSError as exc :
464- if exc .winerror in (_overlapped .ERROR_NETNAME_DELETED ,
465- _overlapped .ERROR_OPERATION_ABORTED ):
466- raise ConnectionResetError (* exc .args )
467- else :
468- raise
469-
470- return self ._register (ov , conn , finish_recv )
471+ return self ._register (ov , conn , self .finish_socket_func )
471472
472473 def recv_into (self , conn , buf , flags = 0 ):
473474 self ._register_with_iocp (conn )
@@ -480,17 +481,7 @@ def recv_into(self, conn, buf, flags=0):
480481 except BrokenPipeError :
481482 return self ._result (0 )
482483
483- def finish_recv (trans , key , ov ):
484- try :
485- return ov .getresult ()
486- except OSError as exc :
487- if exc .winerror in (_overlapped .ERROR_NETNAME_DELETED ,
488- _overlapped .ERROR_OPERATION_ABORTED ):
489- raise ConnectionResetError (* exc .args )
490- else :
491- raise
492-
493- return self ._register (ov , conn , finish_recv )
484+ return self ._register (ov , conn , self .finish_socket_func )
494485
495486 def recvfrom (self , conn , nbytes , flags = 0 ):
496487 self ._register_with_iocp (conn )
@@ -500,17 +491,7 @@ def recvfrom(self, conn, nbytes, flags=0):
500491 except BrokenPipeError :
501492 return self ._result ((b'' , None ))
502493
503- def finish_recv (trans , key , ov ):
504- try :
505- return ov .getresult ()
506- except OSError as exc :
507- if exc .winerror in (_overlapped .ERROR_NETNAME_DELETED ,
508- _overlapped .ERROR_OPERATION_ABORTED ):
509- raise ConnectionResetError (* exc .args )
510- else :
511- raise
512-
513- return self ._register (ov , conn , finish_recv )
494+ return self ._register (ov , conn , self .finish_socket_func )
514495
515496 def recvfrom_into (self , conn , buf , flags = 0 ):
516497 self ._register_with_iocp (conn )
@@ -538,17 +519,7 @@ def sendto(self, conn, buf, flags=0, addr=None):
538519
539520 ov .WSASendTo (conn .fileno (), buf , flags , addr )
540521
541- def finish_send (trans , key , ov ):
542- try :
543- return ov .getresult ()
544- except OSError as exc :
545- if exc .winerror in (_overlapped .ERROR_NETNAME_DELETED ,
546- _overlapped .ERROR_OPERATION_ABORTED ):
547- raise ConnectionResetError (* exc .args )
548- else :
549- raise
550-
551- return self ._register (ov , conn , finish_send )
522+ return self ._register (ov , conn , self .finish_socket_func )
552523
553524 def send (self , conn , buf , flags = 0 ):
554525 self ._register_with_iocp (conn )
@@ -558,17 +529,7 @@ def send(self, conn, buf, flags=0):
558529 else :
559530 ov .WriteFile (conn .fileno (), buf )
560531
561- def finish_send (trans , key , ov ):
562- try :
563- return ov .getresult ()
564- except OSError as exc :
565- if exc .winerror in (_overlapped .ERROR_NETNAME_DELETED ,
566- _overlapped .ERROR_OPERATION_ABORTED ):
567- raise ConnectionResetError (* exc .args )
568- else :
569- raise
570-
571- return self ._register (ov , conn , finish_send )
532+ return self ._register (ov , conn , self .finish_socket_func )
572533
573534 def accept (self , listener ):
574535 self ._register_with_iocp (listener )
@@ -639,16 +600,7 @@ def sendfile(self, sock, file, offset, count):
639600 offset_low , offset_high ,
640601 count , 0 , 0 )
641602
642- def finish_sendfile (trans , key , ov ):
643- try :
644- return ov .getresult ()
645- except OSError as exc :
646- if exc .winerror in (_overlapped .ERROR_NETNAME_DELETED ,
647- _overlapped .ERROR_OPERATION_ABORTED ):
648- raise ConnectionResetError (* exc .args )
649- else :
650- raise
651- return self ._register (ov , sock , finish_sendfile )
603+ return self ._register (ov , sock , self .finish_socket_func )
652604
653605 def accept_pipe (self , pipe ):
654606 self ._register_with_iocp (pipe )
0 commit comments