#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 @@ def recv(self, *args):
def send(self, *args): def send(self, *args):
return os.write(self.fd, *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 read = recv
write = send write = send

View File

@ -428,6 +428,19 @@ def test_send(self):
w.close() w.close()
self.assertEqual(open(TESTFN, 'rb').read(), self.d + d1 + d2) 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): class BaseTestHandler(asyncore.dispatcher):

View File

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

View File

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