diff options
Diffstat (limited to 'pypers/twisted/downloader3.py')
-rw-r--r-- | pypers/twisted/downloader3.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/pypers/twisted/downloader3.py b/pypers/twisted/downloader3.py new file mode 100644 index 0000000..b5c0d38 --- /dev/null +++ b/pypers/twisted/downloader3.py @@ -0,0 +1,37 @@ +""" +A model for a file downloader: Synchronous, Threaded and Asynchronous. +""" + +import os, sys, cmd, time, threading +from ms.debug_utils import TkWindow +from ms.async_utils import MultiIter, run_iter + +from twisted.internet import reactor +from downloader1 import Downloader + +class AsynchronousDownloader(Downloader): + "Twisted based." + mi = MultiIter() + def postloop(self): + reactor.stop() + while reactor.running: pass # until the stop message is received + Downloader.postloop(self) + def do_download(self, arg): + self.mi.append(self.download(arg)) + def download(self, fname): + self.out.write("BEGIN %s" % fname) + for line in file(fname): + time.sleep(.1) + self.out.write(".") + yield None + self.out.write(" END %s\n" % fname) + +def ended(_): + print _, "ended" + #d.out.close() + +if __name__ == "__main__": + d = AsynchronousDownloader() + threading.Thread(None, d.cmdloop).start() + run_iter(d.mi, reactor.callLater, 0) + reactor.run() |