more api
This commit is contained in:
parent
61556e03c1
commit
8f0c54ecca
81
examples/twisted/wamp/work/newapi/test_newapi12b.py
Normal file
81
examples/twisted/wamp/work/newapi/test_newapi12b.py
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
from twisted.internet.defer import inlineCallbacks as coroutine
|
||||||
|
from autobahn.twisted.util import sleep
|
||||||
|
|
||||||
|
@coroutine
|
||||||
|
def component1_setup(reactor, session):
|
||||||
|
# the session is joined and ready for use.
|
||||||
|
def shutdown():
|
||||||
|
print('backend component: shutting down ..')
|
||||||
|
session.leave()
|
||||||
|
|
||||||
|
yield session.subscribe(shutdown, u'com.example.shutdown')
|
||||||
|
# yield session.subscribe(u'com.example.shutdown', shutdown)
|
||||||
|
|
||||||
|
def add2(a, b):
|
||||||
|
print('backend component: add2()')
|
||||||
|
return a + b
|
||||||
|
|
||||||
|
yield session.register(add2, u'com.example.add2')
|
||||||
|
# yield session.register(u'com.example.add2', add2)
|
||||||
|
|
||||||
|
print('backend component: ready.')
|
||||||
|
|
||||||
|
# as we exit, this signals we are ready! the session must be kept.
|
||||||
|
|
||||||
|
|
||||||
|
@coroutine
|
||||||
|
def component2_main(reactor, session):
|
||||||
|
# the session is joined and ready
|
||||||
|
yield sleep(.2) # "enforce" order: backend must have started before we call it
|
||||||
|
print('frontend component: ready')
|
||||||
|
|
||||||
|
result = yield session.call(u'com.example.add2', 2, 3)
|
||||||
|
print('frontend component: result={}'.format(result))
|
||||||
|
|
||||||
|
session.publish(u'com.example.shutdown')
|
||||||
|
|
||||||
|
# as we exit, this signals we are done with the session! the session
|
||||||
|
# can be recycled
|
||||||
|
print('frontend component: shutting down ..')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
from twisted.internet.task import react
|
||||||
|
from autobahn.twisted.component import Component, Config, Transport, run
|
||||||
|
|
||||||
|
transports = [
|
||||||
|
{
|
||||||
|
'type': 'rawsocket',
|
||||||
|
'serializer': 'msgpack',
|
||||||
|
'endpoint': {
|
||||||
|
'type': 'unix',
|
||||||
|
'path': '/tmp/cb1.sock'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'type': 'websocket',
|
||||||
|
'url': 'ws://127.0.0.1:8080/ws',
|
||||||
|
'endpoint': {
|
||||||
|
'type': 'tcp',
|
||||||
|
'host': '127.0.0.1',
|
||||||
|
'port': 8080
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
transports = TransportPool(transports)
|
||||||
|
|
||||||
|
components = [
|
||||||
|
Component(
|
||||||
|
transports,
|
||||||
|
config=Config(realm=u'realm1'),
|
||||||
|
setup=component1_setup
|
||||||
|
),
|
||||||
|
Component(
|
||||||
|
transports,
|
||||||
|
config=Config(realm=u'realm1', extra={'foo': 23}),
|
||||||
|
main=component2_main
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
|
run(components)
|
Loading…
Reference in New Issue
Block a user