diff options
author | fritzy <fritzy@ip-10-251-242-239.ec2.internal> | 2010-09-02 20:01:28 +0000 |
---|---|---|
committer | fritzy <fritzy@ip-10-251-242-239.ec2.internal> | 2010-09-02 20:01:28 +0000 |
commit | d576e32f7aa28332848cdd6e39893266eded64fd (patch) | |
tree | e36a1b85dc0692b6be223f2259c3c2df9cdb5e53 /sleekxmpp/xmlstream/filesocket.py | |
parent | 6dfea828be54d9048779d06b4b31be98b58a2343 (diff) | |
parent | 4a2e7c5393da945359edc2648a2ec124481acf7d (diff) | |
download | slixmpp-d576e32f7aa28332848cdd6e39893266eded64fd.tar.gz slixmpp-d576e32f7aa28332848cdd6e39893266eded64fd.tar.bz2 slixmpp-d576e32f7aa28332848cdd6e39893266eded64fd.tar.xz slixmpp-d576e32f7aa28332848cdd6e39893266eded64fd.zip |
Merge branch 'develop' of git@github.com:fritzy/SleekXMPP into develop
Diffstat (limited to 'sleekxmpp/xmlstream/filesocket.py')
-rw-r--r-- | sleekxmpp/xmlstream/filesocket.py | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/sleekxmpp/xmlstream/filesocket.py b/sleekxmpp/xmlstream/filesocket.py index 07b395dc..441ff875 100644 --- a/sleekxmpp/xmlstream/filesocket.py +++ b/sleekxmpp/xmlstream/filesocket.py @@ -5,21 +5,37 @@ See the file LICENSE for copying permission. """ + from socket import _fileobject import socket -class filesocket(_fileobject): - def read(self, size=4096): - data = self._sock.recv(size) - if data is not None: - return data +class FileSocket(_fileobject): + + """ + Create a file object wrapper for a socket to work around + issues present in Python 2.6 when using sockets as file objects. + + The parser for xml.etree.cElementTree requires a file, but we will + be reading from the XMPP connection socket instead. + """ + + def read(self, size=4096): + """Read data from the socket as if it were a file.""" + data = self._sock.recv(size) + if data is not None: + return data + class Socket26(socket._socketobject): - def makefile(self, mode='r', bufsize=-1): - """makefile([mode[, bufsize]]) -> file object - Return a regular file object corresponding to the socket. The mode - and bufsize arguments are as for the built-in open() function.""" - return filesocket(self._sock, mode, bufsize) + """ + A custom socket implementation that uses our own FileSocket class + to work around issues in Python 2.6 when using sockets as files. + """ + def makefile(self, mode='r', bufsize=-1): + """makefile([mode[, bufsize]]) -> file object + Return a regular file object corresponding to the socket. The mode + and bufsize arguments are as for the built-in open() function.""" + return FileSocket(self._sock, mode, bufsize) |