3 'CloseHandle', 'CreateNamedPipe', 'CreateFile', 'ConnectNamedPipe',
5 'GENERIC_READ', 'GENERIC_WRITE', 'OPEN_EXISTING', 'INFINITE',
7 'PIPE_ACCESS_DUPLEX', 'PIPE_TYPE_MESSAGE', 'PIPE_READMODE_MESSAGE',
8 'PIPE_WAIT', 'PIPE_UNLIMITED_INSTANCES', 'NMPWAIT_WAIT_FOREVER',
9 'FILE_FLAG_OVERLAPPED', 'FILE_FLAG_FIRST_PIPE_INSTANCE',
10 'WaitForMultipleObjects', 'WaitForSingleObject',
11 'WAIT_OBJECT_0', 'ERROR_IO_PENDING',
15 # FIXME: use _overlapped on Python 3.3? see windows_utils.pipe()
17 CloseHandle, CreateNamedPipe, CreateFile, ConnectNamedPipe,
19 GENERIC_READ, GENERIC_WRITE, OPEN_EXISTING, INFINITE,
21 PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE, PIPE_READMODE_MESSAGE,
22 PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, NMPWAIT_WAIT_FOREVER,
23 FILE_FLAG_OVERLAPPED, FILE_FLAG_FIRST_PIPE_INSTANCE,
24 WaitForMultipleObjects, WaitForSingleObject,
25 WAIT_OBJECT_0, ERROR_IO_PENDING,
29 from _multiprocessing import win32
32 from trollius import _overlapped
34 CloseHandle = win32.CloseHandle
35 CreateNamedPipe = win32.CreateNamedPipe
36 CreateFile = win32.CreateFile
39 GENERIC_READ = win32.GENERIC_READ
40 GENERIC_WRITE = win32.GENERIC_WRITE
41 OPEN_EXISTING = win32.OPEN_EXISTING
42 INFINITE = win32.INFINITE
44 PIPE_ACCESS_INBOUND = win32.PIPE_ACCESS_INBOUND
45 PIPE_ACCESS_DUPLEX = win32.PIPE_ACCESS_DUPLEX
46 PIPE_READMODE_MESSAGE = win32.PIPE_READMODE_MESSAGE
47 PIPE_TYPE_MESSAGE = win32.PIPE_TYPE_MESSAGE
48 PIPE_WAIT = win32.PIPE_WAIT
49 PIPE_UNLIMITED_INSTANCES = win32.PIPE_UNLIMITED_INSTANCES
50 NMPWAIT_WAIT_FOREVER = win32.NMPWAIT_WAIT_FOREVER
52 FILE_FLAG_OVERLAPPED = 0x40000000
53 FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000
55 WAIT_OBJECT_0 = _subprocess.WAIT_OBJECT_0
56 WaitForSingleObject = _subprocess.WaitForSingleObject
57 ERROR_IO_PENDING = _overlapped.ERROR_IO_PENDING
59 def ConnectNamedPipe(handle, overlapped):
60 ov = _overlapped.Overlapped()
61 ov.ConnectNamedPipe(handle)
64 def WaitForMultipleObjects(events, wait_all, timeout):
66 raise NotImplementedError()
69 res = WaitForSingleObject(ev, timeout)
70 if res != WAIT_OBJECT_0:
71 err = win32.GetLastError()
72 msg = _overlapped.FormatMessage(err)
73 raise WindowsError(err, msg)