[pypy-svn] r58650 - in pypy/branch/2.5-merge/pypy/rlib: . test

fijal at codespeak.net fijal at codespeak.net
Mon Oct 6 15:19:51 CEST 2008


Author: fijal
Date: Mon Oct  6 15:19:50 2008
New Revision: 58650

Modified:
   pypy/branch/2.5-merge/pypy/rlib/rsocket.py
   pypy/branch/2.5-merge/pypy/rlib/test/test_rsocket.py
Log:
(fijal, jlg) Dummy support for recv_into on rlib level


Modified: pypy/branch/2.5-merge/pypy/rlib/rsocket.py
==============================================================================
--- pypy/branch/2.5-merge/pypy/rlib/rsocket.py	(original)
+++ pypy/branch/2.5-merge/pypy/rlib/rsocket.py	Mon Oct  6 15:19:50 2008
@@ -822,6 +822,10 @@
                 rffi.keep_buffer_alive_until_here(raw_buf, gc_buf)
         raise self.error_handler()
 
+    def recvinto(self, rwbuffer, nbytes, flags=0):
+        buf = self.recv(nbytes, flags)
+        rwbuffer.setslice(0, buf)
+
     def recvfrom(self, buffersize, flags=0):
         """Like recv(buffersize, flags) but also return the sender's
         address."""

Modified: pypy/branch/2.5-merge/pypy/rlib/test/test_rsocket.py
==============================================================================
--- pypy/branch/2.5-merge/pypy/rlib/test/test_rsocket.py	(original)
+++ pypy/branch/2.5-merge/pypy/rlib/test/test_rsocket.py	Mon Oct  6 15:19:50 2008
@@ -103,6 +103,29 @@
     s1.close()
     s2.close()
 
+def test_socketpair_recvinto():
+    class Buffer:
+        def setslice(self, start, string):
+            self.x = string
+
+        def as_str(self):
+            return self.x
+    
+    if sys.platform == "win32":
+        py.test.skip('No socketpair on Windows')
+    s1, s2 = socketpair()
+    buf = Buffer()
+    s1.sendall('?')
+    s2.recvinto(buf, 1)
+    assert buf.as_str() == '?'
+    count = s2.send('x'*99)
+    assert 1 <= count <= 99
+    s1.recvinto(buf, 100)
+    assert buf.as_str() == 'x'*count
+    s1.close()
+    s2.close()
+
+
 def test_simple_tcp():
     import thread
     sock = RSocket()



More information about the Pypy-commit mailing list