2 from foolscap.api import Violation, RemoteException, DeadReferenceError
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()
9 d = rref.callRemote("get_version")
10 def _got_version(version):
11 rref.version = version
13 def _no_get_version(f):
14 f.trap(Violation, RemoteException)
15 rref.version = default
17 d.addCallbacks(_got_version, _no_get_version)
20 def trap_and_discard(f, *errorTypes):
25 return trap_and_discard(f, DeadReferenceError)