summaryrefslogtreecommitdiffstats
path: root/module/network/helper.py
diff options
context:
space:
mode:
authorGravatar mkaay <mkaay@mkaay.de> 2010-12-22 23:44:33 +0100
committerGravatar mkaay <mkaay@mkaay.de> 2010-12-22 23:44:33 +0100
commitc66a630a502a5e118d8773b32820aca861ce32cd (patch)
treefa7b4c5d0f107fb2448a3f399041927182e098a5 /module/network/helper.py
parentfinal cookie fix :D (diff)
downloadpyload-c66a630a502a5e118d8773b32820aca861ce32cd.tar.xz
new download backend integrated so far, downloading works, but still big todo list
Diffstat (limited to 'module/network/helper.py')
-rw-r--r--module/network/helper.py45
1 files changed, 37 insertions, 8 deletions
diff --git a/module/network/helper.py b/module/network/helper.py
index 8cc61d3ff..ed9a88798 100644
--- a/module/network/helper.py
+++ b/module/network/helper.py
@@ -24,6 +24,7 @@ class Deferred():
def __init__(self):
self.call = []
self.err = []
+ self.prgr = {}
self.result = ()
self.errresult = ()
@@ -35,6 +36,13 @@ class Deferred():
kwargs.update(ckwargs)
callInThread(f, *args, **kwargs)
+ #test not in use
+ def addProgress(self, chain, f):
+ if self.prgr.has_key(chain):
+ self.prgr[chain].append(f)
+ else:
+ self.prgr[chain] = [f]
+
def addErrback(self, f, *cargs, **ckwargs):
self.err.append((f, cargs, ckwargs))
if self.errresult:
@@ -58,6 +66,13 @@ class Deferred():
args+=tuple(cargs)
kwargs.update(ckwargs)
callInThread(f, *args, **kwargs)
+
+ #test not in use
+ def progress(self, chain, *args, **kwargs):
+ if not self.prgr.has_key(chain):
+ return
+ for f in self.prgr[chain]:
+ callInThread(f, *args, **kwargs)
#decorator
def threaded(f):
@@ -71,12 +86,17 @@ def waitFor(d):
args = ()
err = None
+ def __init__(self, d):
+ self.d = d
+
def wait(self):
- d.addCallback(self.callb)
- d.addErrback(self.errb)
+ self.d.addCallback(self.callb)
+ self.d.addErrback(self.errb)
while self.waiting:
sleep(0.5)
if self.err:
+ if issubclass(self.err[0][0], Exception):
+ raise self.err[0][0]()
raise Exception(self.err)
return self.args
@@ -87,7 +107,7 @@ def waitFor(d):
def errb(self, *args, **kwargs):
self.waiting = False
self.err = (args, kwargs)
- w = Waiter()
+ w = Waiter(d)
return w.wait()
class DeferredGroup(Deferred):
@@ -110,16 +130,25 @@ class DeferredGroup(Deferred):
if len(self.group) == self.done:
self.callback()
-class WrappedDeferred():
+class WrappedDeferred(object):
def __init__(self, download, d):
- self.download = download
- self.d = d
+ self.__dict__["download"] = download
+ self.__dict__["d"] = d
def addCallback(self, *args, **kwargs):
- self.d.addCallback(*args, **kwargs)
+ self.__dict__["d"].addCallback(*args, **kwargs)
def addErrback(self, *args, **kwargs):
- self.d.addErrback(*args, **kwargs)
+ self.__dict__["d"].addErrback(*args, **kwargs)
+
+ def callback(self, *args, **kwargs):
+ self.__dict__["d"].callback(*args, **kwargs)
+
+ def error(self, *args, **kwargs):
+ self.__dict__["d"].error(*args, **kwargs)
def __getattr__(self, attr):
return getattr(self.download, attr)
+
+ def __setattr__(self, attr, val):
+ return setattr(self.download, attr, val)