#9354: Provide getsockopt() in asyncore file_wrapper(). Patch by Lukas Langa.

This commit is contained in:
Georg Brandl 2010-07-28 08:19:35 +00:00
parent 8182b717db
commit cbb0ae4a42
4 changed files with 24 additions and 1 deletions

View File

@ -607,6 +607,14 @@ if os.name == 'posix':
def send(self, *args):
return os.write(self.fd, *args)
def getsockopt(self, level, optname, buflen=None):
if (level == socket.SOL_SOCKET and
optname == socket.SO_ERROR and
not buflen):
return 0
raise NotImplementedError("Only asyncore specific behaviour "
"implemented.")
read = recv
write = send

View File

@ -428,6 +428,19 @@ class FileWrapperTest(unittest.TestCase):
w.close()
self.assertEqual(open(TESTFN, 'rb').read(), self.d + d1 + d2)
@unittest.skipUnless(hasattr(asyncore, 'file_dispatcher'),
'asyncore.file_dispatcher required')
def test_dispatcher(self):
fd = os.open(TESTFN, os.O_RDONLY)
data = []
class FileDispatcher(asyncore.file_dispatcher):
def handle_read(self):
data.append(self.recv(29))
s = FileDispatcher(fd)
os.close(fd)
asyncore.loop(timeout=0.01, use_poll=True, count=2)
self.assertEqual(b"".join(data), self.d)
class BaseTestHandler(asyncore.dispatcher):

View File

@ -448,8 +448,8 @@ Andrew Kuchling
Vladimir Kushnir
Cameron Laird
Torsten Landschoff
Tino Lange
Łukasz Langa
Tino Lange
Andrew Langmead
Detlef Lannert
Soren Larsen

View File

@ -475,6 +475,8 @@ C-API
Library
-------
- Issue #9354: Provide getsockopt() in asyncore's file_wrapper.
- Issue #8966: ctypes: Remove implicit bytes-unicode conversion.
- Issue #9378: python -m pickle <pickle file> will now load and