efficient vim config
[dotfiles/.git] / .local / lib / python2.7 / site-packages / trollius / py33_winapi.py
1
2 __all__ = [
3     'CloseHandle', 'CreateNamedPipe', 'CreateFile', 'ConnectNamedPipe',
4     'NULL',
5     'GENERIC_READ', 'GENERIC_WRITE', 'OPEN_EXISTING', 'INFINITE',
6     'PIPE_ACCESS_INBOUND',
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',
12     ]
13
14 try:
15     # FIXME: use _overlapped on Python 3.3? see windows_utils.pipe()
16     from _winapi import (
17         CloseHandle, CreateNamedPipe, CreateFile, ConnectNamedPipe,
18         NULL,
19         GENERIC_READ, GENERIC_WRITE, OPEN_EXISTING, INFINITE,
20         PIPE_ACCESS_INBOUND,
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,
26     )
27 except ImportError:
28     # Python < 3.3
29     from _multiprocessing import win32
30     import _subprocess
31
32     from trollius import _overlapped
33
34     CloseHandle = win32.CloseHandle
35     CreateNamedPipe = win32.CreateNamedPipe
36     CreateFile = win32.CreateFile
37     NULL = win32.NULL
38
39     GENERIC_READ = win32.GENERIC_READ
40     GENERIC_WRITE = win32.GENERIC_WRITE
41     OPEN_EXISTING = win32.OPEN_EXISTING
42     INFINITE = win32.INFINITE
43
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
51
52     FILE_FLAG_OVERLAPPED = 0x40000000
53     FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000
54
55     WAIT_OBJECT_0 = _subprocess.WAIT_OBJECT_0
56     WaitForSingleObject = _subprocess.WaitForSingleObject
57     ERROR_IO_PENDING = _overlapped.ERROR_IO_PENDING
58
59     def ConnectNamedPipe(handle, overlapped):
60         ov = _overlapped.Overlapped()
61         ov.ConnectNamedPipe(handle)
62         return ov
63
64     def WaitForMultipleObjects(events, wait_all, timeout):
65         if not wait_all:
66             raise NotImplementedError()
67
68         for ev in events:
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)
74
75         return WAIT_OBJECT_0