5
5
if sys .platform != 'win32' : # pragma: no cover
6
6
raise ImportError ('win32 only' )
7
7
8
- import _overlapped
8
+ # import _overlapped; XXX: RUSTPYTHON
9
9
import _winapi
10
10
import errno
11
11
from functools import partial
@@ -132,6 +132,7 @@ def _unregister_wait_cb(self, fut):
132
132
self ._ov = None
133
133
134
134
def _unregister_wait (self ):
135
+ import _overlapped
135
136
if not self ._registered :
136
137
return
137
138
self ._registered = False
@@ -194,6 +195,7 @@ def set_exception(self, exception):
194
195
195
196
class _WaitHandleFuture (_BaseWaitHandleFuture ):
196
197
def __init__ (self , ov , handle , wait_handle , proactor , * , loop = None ):
198
+ import _overlapped # XXX: RUSTPYTHON
197
199
super ().__init__ (ov , handle , wait_handle , loop = loop )
198
200
self ._proactor = proactor
199
201
self ._unregister_proactor = True
@@ -219,6 +221,7 @@ def _unregister_wait_cb(self, fut):
219
221
super ()._unregister_wait_cb (fut )
220
222
221
223
def _unregister_wait (self ):
224
+ import _overlapped # XXX: RUSTPYTHON
222
225
if not self ._registered :
223
226
return
224
227
self ._registered = False
@@ -417,6 +420,7 @@ class IocpProactor:
417
420
"""Proactor implementation using IOCP."""
418
421
419
422
def __init__ (self , concurrency = INFINITE ):
423
+ import _overlapped # XXX: RUSTPYTHON
420
424
self ._loop = None
421
425
self ._results = []
422
426
self ._iocp = _overlapped .CreateIoCompletionPort (
@@ -458,6 +462,7 @@ def _result(self, value):
458
462
459
463
@staticmethod
460
464
def finish_socket_func (trans , key , ov ):
465
+ import _overlapped # XXX: RUSTPYTHON
461
466
try :
462
467
return ov .getresult ()
463
468
except OSError as exc :
@@ -469,6 +474,7 @@ def finish_socket_func(trans, key, ov):
469
474
470
475
@classmethod
471
476
def _finish_recvfrom (cls , trans , key , ov , * , empty_result ):
477
+ import _overlapped # XXX: RUSTPYTHON
472
478
try :
473
479
return cls .finish_socket_func (trans , key , ov )
474
480
except OSError as exc :
@@ -480,6 +486,7 @@ def _finish_recvfrom(cls, trans, key, ov, *, empty_result):
480
486
raise
481
487
482
488
def recv (self , conn , nbytes , flags = 0 ):
489
+ import _overlapped # XXX: RUSTPYTHON
483
490
self ._register_with_iocp (conn )
484
491
ov = _overlapped .Overlapped (NULL )
485
492
try :
@@ -493,6 +500,7 @@ def recv(self, conn, nbytes, flags=0):
493
500
return self ._register (ov , conn , self .finish_socket_func )
494
501
495
502
def recv_into (self , conn , buf , flags = 0 ):
503
+ import _overlapped # XXX: RUSTPYTHON
496
504
self ._register_with_iocp (conn )
497
505
ov = _overlapped .Overlapped (NULL )
498
506
try :
@@ -506,6 +514,7 @@ def recv_into(self, conn, buf, flags=0):
506
514
return self ._register (ov , conn , self .finish_socket_func )
507
515
508
516
def recvfrom (self , conn , nbytes , flags = 0 ):
517
+ import _overlapped # XXX: RUSTPYTHON
509
518
self ._register_with_iocp (conn )
510
519
ov = _overlapped .Overlapped (NULL )
511
520
try :
@@ -517,6 +526,7 @@ def recvfrom(self, conn, nbytes, flags=0):
517
526
empty_result = b'' ))
518
527
519
528
def recvfrom_into (self , conn , buf , flags = 0 ):
529
+ import _overlapped # XXX: RUSTPYTHON
520
530
self ._register_with_iocp (conn )
521
531
ov = _overlapped .Overlapped (NULL )
522
532
try :
@@ -528,6 +538,7 @@ def recvfrom_into(self, conn, buf, flags=0):
528
538
empty_result = 0 ))
529
539
530
540
def sendto (self , conn , buf , flags = 0 , addr = None ):
541
+ import _overlapped # XXX: RUSTPYTHON
531
542
self ._register_with_iocp (conn )
532
543
ov = _overlapped .Overlapped (NULL )
533
544
@@ -536,6 +547,7 @@ def sendto(self, conn, buf, flags=0, addr=None):
536
547
return self ._register (ov , conn , self .finish_socket_func )
537
548
538
549
def send (self , conn , buf , flags = 0 ):
550
+ import _overlapped # XXX: RUSTPYTHON
539
551
self ._register_with_iocp (conn )
540
552
ov = _overlapped .Overlapped (NULL )
541
553
if isinstance (conn , socket .socket ):
@@ -546,6 +558,7 @@ def send(self, conn, buf, flags=0):
546
558
return self ._register (ov , conn , self .finish_socket_func )
547
559
548
560
def accept (self , listener ):
561
+ import _overlapped # XXX: RUSTPYTHON
549
562
self ._register_with_iocp (listener )
550
563
conn = self ._get_accept_socket (listener .family )
551
564
ov = _overlapped .Overlapped (NULL )
@@ -574,6 +587,7 @@ async def accept_coro(future, conn):
574
587
return future
575
588
576
589
def connect (self , conn , address ):
590
+ import _overlapped # XXX: RUSTPYTHON
577
591
if conn .type == socket .SOCK_DGRAM :
578
592
# WSAConnect will complete immediately for UDP sockets so we don't
579
593
# need to register any IOCP operation
@@ -605,6 +619,7 @@ def finish_connect(trans, key, ov):
605
619
return self ._register (ov , conn , finish_connect )
606
620
607
621
def sendfile (self , sock , file , offset , count ):
622
+ import _overlapped # XXX: RUSTPYTHON
608
623
self ._register_with_iocp (sock )
609
624
ov = _overlapped .Overlapped (NULL )
610
625
offset_low = offset & 0xffff_ffff
@@ -617,6 +632,7 @@ def sendfile(self, sock, file, offset, count):
617
632
return self ._register (ov , sock , self .finish_socket_func )
618
633
619
634
def accept_pipe (self , pipe ):
635
+ import _overlapped # XXX: RUSTPYTHON
620
636
self ._register_with_iocp (pipe )
621
637
ov = _overlapped .Overlapped (NULL )
622
638
connected = ov .ConnectNamedPipe (pipe .fileno ())
@@ -634,6 +650,7 @@ def finish_accept_pipe(trans, key, ov):
634
650
return self ._register (ov , pipe , finish_accept_pipe )
635
651
636
652
async def connect_pipe (self , address ):
653
+ import _overlapped # XXX: RUSTPYTHON
637
654
delay = CONNECT_PIPE_INIT_DELAY
638
655
while True :
639
656
# Unfortunately there is no way to do an overlapped connect to
@@ -668,6 +685,7 @@ def _wait_cancel(self, event, done_callback):
668
685
return fut
669
686
670
687
def _wait_for_handle (self , handle , timeout , _is_cancel ):
688
+ import _overlapped # XXX: RUSTPYTHON
671
689
self ._check_closed ()
672
690
673
691
if timeout is None :
@@ -702,6 +720,7 @@ def finish_wait_for_handle(trans, key, ov):
702
720
return f
703
721
704
722
def _register_with_iocp (self ,
8D12
obj ):
723
+ import _overlapped # XXX: RUSTPYTHON
705
724
# To get notifications of finished ops on this objects sent to the
706
725
# completion port, were must register the handle.
707
726
if obj not in self ._registered :
@@ -759,6 +778,7 @@ def _get_accept_socket(self, family):
759
778
return s
760
779
761
780
def _poll (self , timeout = None ):
781
+ import _overlapped # XXX: RUSTPYTHON
762
782
if timeout is None :
763
783
ms = INFINITE
764
784
elif timeout < 0 :
0 commit comments