[pypy-svn] r77822 - in pypy/branch/fast-forward/pypy/module/_multiprocessing: . test

afa at codespeak.net afa at codespeak.net
Tue Oct 12 13:16:10 CEST 2010


Author: afa
Date: Tue Oct 12 13:16:08 2010
New Revision: 77822

Modified:
   pypy/branch/fast-forward/pypy/module/_multiprocessing/interp_win32.py
   pypy/branch/fast-forward/pypy/module/_multiprocessing/test/test_win32.py
Log:
Add multiprocessing.win32.WaitNamedPipe()


Modified: pypy/branch/fast-forward/pypy/module/_multiprocessing/interp_win32.py
==============================================================================
--- pypy/branch/fast-forward/pypy/module/_multiprocessing/interp_win32.py	(original)
+++ pypy/branch/fast-forward/pypy/module/_multiprocessing/interp_win32.py	Tue Oct 12 13:16:08 2010
@@ -50,6 +50,10 @@
         rwin32.LPDWORD, rwin32.LPDWORD, rwin32.LPDWORD],
     rwin32.BOOL)
 
+_WaitNamedPipe = rwin32.winexternal(
+    'WaitNamedPipeA', [rwin32.LPCSTR, rwin32.DWORD],
+    rwin32.BOOL)
+
 _PeekNamedPipe = rwin32.winexternal(
     'PeekNamedPipe', [
         rwin32.HANDLE,
@@ -145,6 +149,12 @@
         lltype.free(state, flavor='raw')
         lltype.free(statep, flavor='raw')
 
+ at unwrap_spec(ObjSpace, str, r_uint)
+def WaitNamedPipe(space, name, timeout):
+    # Careful: zero means "default value specified by CreateNamedPipe()"
+    if not _WaitNamedPipe(name, timeout):
+        raise wrap_windowserror(space, rwin32.lastWindowsError())
+
 @unwrap_spec(ObjSpace, str, r_uint, r_uint, W_Root, r_uint, r_uint, W_Root)
 def CreateFile(space, filename, access, share, w_security,
                disposition, flags, w_templatefile):
@@ -184,7 +194,7 @@
     # functions
     for name in ['CloseHandle', 'GetLastError', 'CreateFile',
                  'CreateNamedPipe', 'ConnectNamedPipe',
-                 'SetNamedPipeHandleState',
+                 'SetNamedPipeHandleState', 'WaitNamedPipe',
                  'ExitProcess',
                  ]:
         function = globals()[name]

Modified: pypy/branch/fast-forward/pypy/module/_multiprocessing/test/test_win32.py
==============================================================================
--- pypy/branch/fast-forward/pypy/module/_multiprocessing/test/test_win32.py	(original)
+++ pypy/branch/fast-forward/pypy/module/_multiprocessing/test/test_win32.py	Tue Oct 12 13:16:08 2010
@@ -43,5 +43,8 @@
             if e.args[0] != win32.ERROR_PIPE_CONNECTED:
                 raise
 
+        exc = raises(WindowsError, win32.WaitNamedPipe, address, timeout=100)
+        assert exc.value.winerror == 121 # ERROR_SEM_TIMEOUT
+
         win32.CloseHandle(readhandle)
         win32.CloseHandle(writehandle)



More information about the Pypy-commit mailing list