backend, bridge: asynchronous history

quick_frontend: use of asynchronous history
This commit is contained in:
Goffi 2011-11-08 01:08:11 +01:00
commit f1966d9692
2 changed files with 94 additions and 79 deletions

View file

@ -434,15 +434,18 @@ doc=Get all categories currently existing in parameters
doc_return=list of categories
[getHistory]
async=
type=method
category=core
sig_in=ssi
sig_out=a{i(ss)}
sig_in=ssib
sig_out=a{i(sss)}
param_3_default=True
doc=Get history of a communication between two entities
doc_param_0=from_jid: source JID
doc_param_1=to_jid: dest JID
doc_param_2=size: size of the history (0 for the whole history)
doc_return=Dict where key is timestamp (seconds this the Epoch), and value is a tuple (from_jid, message)
doc_param_0=from_jid: source JID (bare jid for catch all, full jid else)
doc_param_1=to_jid: dest JID (bare jid for catch all, full jid else)
doc_param_2=limit: max number of history elements to get (0 for the whole history)
doc_param_3=between: True if we want history between the two jids (in both direction), False if we only want messages from from_jid to to_jid
doc_return=Dict where key is timestamp (seconds this the Epoch), and value is a tuple (full from_jid, full to_jid, message)
[addContact]
type=method

View file

@ -80,13 +80,13 @@ class DbusObject(dbus.service.Object):
result = self.cb[name](*args, **kwargs)
if async:
if not isinstance(result, Deferred):
error("Asynchrone method [%s] does not return a Deferred." % name)
error("Asynchronous method [%s] does not return a Deferred." % name)
raise AsyncNotDeferred
result.addCallback(callback)
result.addErrback(lambda err:errback(GenericException(err)))
else:
if isinstance(result, Deferred):
error("Synchrone method [%s] return a Deferred." % name)
error("Synchronous method [%s] return a Deferred." % name)
raise DeferredNotAsync
return result