2008-11-21 20:07:27 -07:00
|
|
|
|
2009-06-22 19:08:26 -07:00
|
|
|
from foolscap.api import Violation, RemoteException, DeadReferenceError
|
2008-11-21 20:07:27 -07:00
|
|
|
|
2009-05-21 17:46:32 -07:00
|
|
|
def add_version_to_remote_reference(rref, default):
|
|
|
|
"""I try to add a .version attribute to the given RemoteReference. I call
|
|
|
|
the remote get_version() method to learn its version. I'll add the
|
|
|
|
default value if the remote side doesn't appear to have a get_version()
|
|
|
|
method."""
|
2008-11-21 20:07:27 -07:00
|
|
|
d = rref.callRemote("get_version")
|
|
|
|
def _got_version(version):
|
2009-05-21 17:46:32 -07:00
|
|
|
rref.version = version
|
|
|
|
return rref
|
|
|
|
def _no_get_version(f):
|
|
|
|
f.trap(Violation, RemoteException)
|
|
|
|
rref.version = default
|
|
|
|
return rref
|
|
|
|
d.addCallbacks(_got_version, _no_get_version)
|
2008-11-21 20:07:27 -07:00
|
|
|
return d
|
|
|
|
|
2009-06-22 19:08:26 -07:00
|
|
|
def trap_and_discard(f, *errorTypes):
|
|
|
|
f.trap(*errorTypes)
|
|
|
|
pass
|
|
|
|
|
|
|
|
def trap_deadref(f):
|
|
|
|
f.trap(DeadReferenceError)
|
|
|
|
pass
|