Skip to content

Commit 27546ea

Browse files
committed
asyncio_micro: Support readall semantics and handle non-blocking read() well.
Non-blocking read()/write() may return None if there's no data, and that's not EOF.
1 parent 875de44 commit 27546ea

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

asyncio_micro/asyncio_micro.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,9 +191,13 @@ class StreamReader:
191191
def __init__(self, s):
192192
self.s = s
193193

194-
def read(self, n):
194+
def read(self, n=-1):
195195
s = yield IORead(self.s)
196-
res = self.s.read(n)
196+
while True:
197+
res = self.s.read(n)
198+
if res is not None:
199+
break
200+
log.warn("Empty read")
197201
if not res:
198202
yield IODone(IO_READ, self.s)
199203
return res
@@ -202,7 +206,11 @@ def readline(self):
202206
log.debug("StreamReader.readline()")
203207
s = yield IORead(self.s)
204208
log.debug("StreamReader.readline(): after IORead: %s", s)
205-
res = self.s.readline()
209+
while True:
210+
res = self.s.readline()
211+
if res is not None:
212+
break
213+
log.warn("Empty read")
206214
if not res:
207215
yield IODone(IO_READ, self.s)
208216
log.debug("StreamReader.readline(): res: %s", res)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy