[Python-checkins] CVS: python/dist/src/Lib/plat-win socket.py,1.6,1.7
Guido van Rossum
guido@cnri.reston.va.us
Wed, 2 Feb 2000 11:57:34 -0500 (EST)
Update of /projects/cvsroot/python/dist/src/Lib/plat-win
In directory eric:/projects/python/develop/guido/src/Lib/plat-win
Modified Files:
socket.py
Log Message:
In _fileobject, optimize read() a bit (it could be really slow), and
remove "import string" -- use string methods instead!
Index: socket.py
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Lib/plat-win/socket.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** socket.py 1998/05/06 13:48:04 1.6
--- socket.py 2000/02/02 16:57:32 1.7
***************
*** 97,125 ****
def read(self, n=-1):
if n >= 0:
! while len(self._rbuf) < n:
! new = self._sock.recv(self._rbufsize)
if not new: break
! self._rbuf = self._rbuf + new
! data, self._rbuf = self._rbuf[:n], self._rbuf[n:]
! return data
while 1:
! new = self._sock.recv(self._rbufsize)
if not new: break
! self._rbuf = self._rbuf + new
! data, self._rbuf = self._rbuf, ""
! return data
! def readline(self):
! import string
data = ""
! i = string.find(self._rbuf, '\n')
! while i < 0:
new = self._sock.recv(self._rbufsize)
if not new: break
! i = string.find(new, '\n')
if i >= 0: i = i + len(self._rbuf)
self._rbuf = self._rbuf + new
if i < 0: i = len(self._rbuf)
else: i = i+1
data, self._rbuf = self._rbuf[:i], self._rbuf[i:]
return data
--- 97,141 ----
def read(self, n=-1):
if n >= 0:
! k = len(self._rbuf)
! if n <= k:
! data = self._rbuf[:n]
! self._rbuf = self._rbuf[n:]
! return data
! n = n - k
! l = [self._rbuf]
! self._rbuf = ""
! while n > 0:
! new = self._sock.recv(max(n, self._rbufsize))
if not new: break
! k = len(new)
! if k > n:
! l.append(new[:n])
! self._rbuf = new[n:]
! break
! l.append(new)
! n = n - k
! return "".join(l)
! k = max(512, self._rbufsize)
! l = [self._rbuf]
! self._rbuf = ""
while 1:
! new = self._sock.recv(k)
if not new: break
! l.append(new)
! k = min(k*2, 1024**2)
! return "".join(l)
! def readline(self, limit=-1):
data = ""
! i = self._rbuf.find('\n')
! while i < 0 and not (0 < limit <= len(self._rbuf)):
new = self._sock.recv(self._rbufsize)
if not new: break
! i = new.find('\n')
if i >= 0: i = i + len(self._rbuf)
self._rbuf = self._rbuf + new
if i < 0: i = len(self._rbuf)
else: i = i+1
+ if 0 <= limit < len(self._rbuf): i = limit
data, self._rbuf = self._rbuf[:i], self._rbuf[i:]
return data