Ensure we use on_progress everywhere

Also simplify calling semantics
This commit is contained in:
meejah 2015-03-16 13:31:00 -06:00
parent ef60d71726
commit 1cda3252d9
4 changed files with 9 additions and 19 deletions

View File

@ -698,23 +698,13 @@ class ApplicationSession(BaseSession):
if msg.progress:
# progressive result
#
call_request = self._call_reqs[msg.request]
on_progress = call_request.options.onProgress
if on_progress:
if call_request.options.on_progress:
kw = msg.kwargs or dict()
args = msg.args or tuple()
try:
if msg.kwargs:
if msg.args:
on_progress(*msg.args, **msg.kwargs)
else:
on_progress(**msg.kwargs)
else:
if msg.args:
on_progress(*msg.args)
else:
on_progress()
# XXX what if on_progress returns a Deferred/Future?
call_request.options.on_progress(*args, **kw)
except Exception as e:
try:
self.onUserError(e, "While firing on_progress")

View File

@ -330,7 +330,7 @@ Call a remote procedure which produces interim, progressive results:
print("{} items deleted so far ..".format(n))
total = yield session.call("com.myapp.log.delete",
options = CallOptions(onProgress = deletedSoFar))
options = CallOptions(on_progress = deletedSoFar))
print("{} items deleted in total.".format(total))
Distributed calls
@ -524,7 +524,7 @@ and can be called like this
print("{} items processed so far ..".format(i))
total = yield session.call("com.myapp.longop", 10,
options = CallOptions(onProgress = processedSoFar))
options = CallOptions(on_progress = processedSoFar))
print("{} items deleted in total.".format(total))
Registration with invocation details

View File

@ -46,7 +46,7 @@ class Component(ApplicationSession):
def on_progress(i):
print("Progress: {}".format(i))
res = yield from self.call('com.myapp.longop', 3, options=CallOptions(onProgress=on_progress))
res = yield from self.call('com.myapp.longop', 3, options=CallOptions(on_progress=on_progress))
print("Final: {}".format(res))

View File

@ -44,7 +44,7 @@ class Component(ApplicationSession):
def on_progress(i):
print("Progress: {}".format(i))
res = yield self.call('com.myapp.longop', 3, options=CallOptions(onProgress=on_progress))
res = yield self.call('com.myapp.longop', 3, options=CallOptions(on_progress=on_progress))
print("Final: {}".format(res))