Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
add progressive calls to the component example
  • Loading branch information
meejah committed Apr 14, 2017
1 parent 17b574c commit 4e7a795
Showing 1 changed file with 88 additions and 0 deletions.
88 changes: 88 additions & 0 deletions examples/twisted/wamp/work/newapi/test_newapi_pubreg_decorator.py
@@ -0,0 +1,88 @@
from __future__ import print_function
import os
import txaio

from twisted.internet.defer import inlineCallbacks
from twisted.internet.endpoints import TCP4ClientEndpoint
from twisted.internet.endpoints import SSL4ClientEndpoint
from twisted.internet.endpoints import UNIXClientEndpoint
from twisted.internet.ssl import optionsForClientTLS, trustRootFromCertificates, Certificate, CertificateOptions
from twisted.internet import reactor

from autobahn.twisted.component import Component, run
from autobahn.twisted.util import sleep
from autobahn.twisted.wamp import Session
from autobahn.wamp.types import PublishOptions, SubscribeOptions
from autobahn.wamp.types import RegisterOptions, CallOptions


component = Component(
transports=u'ws://localhost:8080/ws',
realm=u'crossbardemo',
)

# @component.subscribe(
# u"com.example.",
# options=SubscribeOptions(match=u"prefix"),
# )
# def catch_all(*args, **kw):
# print("catch_all({}, {})".format(args, kw))

@component.subscribe(
u"com.example.",
options=SubscribeOptions(match=u"prefix", details_arg='details'),
)
def an_event(details=None):
print("topic '{}'".format(details.topic))


@component.register(
u"com.example.progressive",
options=RegisterOptions(details_arg='details'),
)
@inlineCallbacks
def progressive_callee(details=None):
print("progressive", details)
if details.progress is None:
raise RuntimeError(
"You can only call be with an on_progress handler"
)
for x in ['here are', 'some progressive', 'results']:
details.progress(x)
yield sleep(.5)
return None


@component.on_join
def join(session, details):
print("Session {} joined: {}".format(details.session, details))

def pub(topic):
print("publishing '{}'".format(topic))
return session.publish(
topic,
options=PublishOptions(exclude_me=False),
)

def call_progress(topic):
print("calling '{}' progressively".format(topic))
def on_progress(some_data):
print("received: '{}'".format(some_data))
return session.call(
topic,
options=CallOptions(on_progress=on_progress)
)

reactor.callLater(1, pub, u'com.example.foo')
reactor.callLater(2, pub, u'com.non_matching')
reactor.callLater(3, pub, u'com.example.some.other.uri')
reactor.callLater(4, call_progress, u'com.example.progressive')
reactor.callLater(7, session.leave)

@component.on_leave
def leave(session, details):
print("Session leaving: {}: {}".format(details.reason, details.message))


if __name__ == '__main__':
run(component)

0 comments on commit 4e7a795

Please sign in to comment.