Skip to content

Commit 1d9f785

Browse files
committed
asyncio_micro: Implement proper write() handling.
TODO: Test!
1 parent 27546ea commit 1d9f785

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

asyncio_micro/asyncio_micro.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,10 +223,19 @@ def __init__(self, s):
223223
self.s = s
224224

225225
def write(self, buf):
226-
res = self.s.write(buf)
227-
log.debug("StreamWriter.write(): %d", res)
228-
s = yield IOWrite(self.s)
229-
log.debug("StreamWriter.write(): returning")
226+
sz = len(buf)
227+
while True:
228+
res = self.s.write(buf)
229+
log.debug("StreamWriter.write(): %d", res)
230+
# If we spooled everything, (just) return
231+
if res == sz:
232+
return
233+
if res is None:
234+
res = 0
235+
buf = buf[res:]
236+
sz -= res
237+
s = yield IOWrite(self.s)
238+
log.debug("StreamWriter.write(): can write more")
230239

231240
def close(self):
232241
yield IODone(IO_WRITE, self.s)

0 commit comments

Comments
 (0)