asyncio_micro: Implement proper write() handling.

TODO: Test!
pull/11/head
Paul Sokolovsky 2014-05-07 02:12:29 +03:00
rodzic 6e61c501ac
commit 15cc7aa7b7
1 zmienionych plików z 13 dodań i 4 usunięć

Wyświetl plik

@ -223,10 +223,19 @@ class StreamWriter:
self.s = s
def write(self, buf):
res = self.s.write(buf)
log.debug("StreamWriter.write(): %d", res)
s = yield IOWrite(self.s)
log.debug("StreamWriter.write(): returning")
sz = len(buf)
while True:
res = self.s.write(buf)
log.debug("StreamWriter.write(): %d", res)
# If we spooled everything, (just) return
if res == sz:
return
if res is None:
res = 0
buf = buf[res:]
sz -= res
s = yield IOWrite(self.s)
log.debug("StreamWriter.write(): can write more")
def close(self):
yield IODone(IO_WRITE, self.s)