]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - src/allmydata/util/rrefutil.py
rrefutil: add trap_deafref utility, to make the callRemote-plus-ignore-DeadReferenceE...
[tahoe-lafs/tahoe-lafs.git] / src / allmydata / util / rrefutil.py
1
2 from foolscap.api import Violation, RemoteException, DeadReferenceError
3
4 def add_version_to_remote_reference(rref, default):
5     """I try to add a .version attribute to the given RemoteReference. I call
6     the remote get_version() method to learn its version. I'll add the
7     default value if the remote side doesn't appear to have a get_version()
8     method."""
9     d = rref.callRemote("get_version")
10     def _got_version(version):
11         rref.version = version
12         return rref
13     def _no_get_version(f):
14         f.trap(Violation, RemoteException)
15         rref.version = default
16         return rref
17     d.addCallbacks(_got_version, _no_get_version)
18     return d
19
20 def trap_and_discard(f, *errorTypes):
21     f.trap(*errorTypes)
22     pass
23
24 def trap_deadref(f):
25     f.trap(DeadReferenceError)
26     pass