bridge: added check that synchronous method does not return a deferred

This commit is contained in:
Goffi 2011-11-07 22:27:07 +01:00
commit 88d0fceb2a
2 changed files with 12 additions and 0 deletions

View file

@ -42,6 +42,9 @@ class InternalError(dbus.DBusException):
class AsyncNotDeferred(dbus.DBusException):
_dbus_error_name = const_ERROR_PREFIX + ".AsyncNotDeferred"
class DeferredNotAsync(dbus.DBusException):
_dbus_error_name = const_ERROR_PREFIX + ".DeferredNotAsync"
class GenericException(dbus.DBusException):
def __init__(self, twisted_error):
super(GenericException,self).__init__()
@ -82,6 +85,9 @@ class DbusObject(dbus.service.Object):
result.addCallback(callback)
result.addErrback(lambda err:errback(GenericException(err)))
else:
if isinstance(result, Deferred):
error("Synchrone method [%s] return a Deferred." % name)
raise DeferredNotAsync
return result
### signals ###

View file

@ -42,6 +42,9 @@ class InternalError(dbus.DBusException):
class AsyncNotDeferred(dbus.DBusException):
_dbus_error_name = const_ERROR_PREFIX + ".AsyncNotDeferred"
class DeferredNotAsync(dbus.DBusException):
_dbus_error_name = const_ERROR_PREFIX + ".DeferredNotAsync"
class GenericException(dbus.DBusException):
def __init__(self, twisted_error):
super(GenericException,self).__init__()
@ -82,6 +85,9 @@ class DbusObject(dbus.service.Object):
result.addCallback(callback)
result.addErrback(lambda err:errback(GenericException(err)))
else:
if isinstance(result, Deferred):
error("Synchrone method [%s] return a Deferred." % name)
raise DeferredNotAsync
return result
### signals ###