| 27 | |
| 28 | |
| 29 | class Deferred(): |
| 30 | def __init__(self): |
| 31 | self.call = [] |
| 32 | self.result = () |
| 33 | |
| 34 | def addCallback(self, f, *cargs, **ckwargs): |
| 35 | self.call.append((f, cargs, ckwargs)) |
| 36 | |
| 37 | def callback(self, *args, **kwargs): |
| 38 | if self.result: |
| 39 | raise AlreadyCalled |
| 40 | self.result = (args, kwargs) |
| 41 | for f, cargs, ckwargs in self.call: |
| 42 | args += tuple(cargs) |
| 43 | kwargs.update(ckwargs) |
| 44 | f(*args ** kwargs) |
| 45 | |
| 46 | |
| 47 | class Scheduler(): |