scott@solaris:~/Documents/crossbar-tests/pvtest$ crossbar start
2014-09-02 11:11:15-0600 [Controller 12190] Log opened.
2014-09-02 11:11:15-0600 [Controller 12190] ============================== Crossbar.io ==============================
2014-09-02 11:11:15-0600 [Controller 12190] Crossbar.io 0.9.7-5 starting
2014-09-02 11:11:15-0600 [Controller 12190] Running on CPython using EPollReactor reactor
2014-09-02 11:11:15-0600 [Controller 12190] Starting from node directory /home/scott/Documents/crossbar-tests/pvtest/.crossbar
2014-09-02 11:11:15-0600 [Controller 12190] Starting from local configuration '/home/scott/Documents/crossbar-tests/pvtest/.crossbar/config.json'
2014-09-02 11:11:15-0600 [Controller 12190] No WAMPlets detected in enviroment.
2014-09-02 11:11:15-0600 [Controller 12190] Starting Router with ID 'worker1' ..
2014-09-02 11:11:15-0600 [Router 12199] Log opened.
2014-09-02 11:11:16-0600 [Router 12199] Running under CPython using EPollReactor reactor
2014-09-02 11:11:16-0600 [Router 12199] Entering event loop ..
2014-09-02 11:11:16-0600 [Controller 12190] Router with ID 'worker1' and PID 12199 started
2014-09-02 11:11:16-0600 [Controller 12190] Router 'worker1': PYTHONPATH extended
2014-09-02 11:11:16-0600 [Controller 12190] Router 'worker1': realm 'realm1' started
2014-09-02 11:11:16-0600 [Controller 12190] Router 'worker1': role 'role1' started on realm 'realm1'
2014-09-02 11:11:19-0600 [Router 12199] Inside _VisualizerServer constructor, config:
2014-09-02 11:11:19-0600 [Router 12199] ComponentConfig(realm = vtkweb, extra = None)
2014-09-02 11:11:19-0600 [Controller 12190] Router 'worker1': component 'component1' started
2014-09-02 11:11:19-0600 [Router 12199] Site starting on 8080
2014-09-02 11:11:19-0600 [Controller 12190] Router 'worker1': transport 'transport1' started
2014-09-02 11:17:41-0600 [Router 12199] Connection to node controller lost.
2014-09-02 11:17:41-0600 [Router 12199] Unhandled Error
2014-09-02 11:17:41-0600 [Router 12199] Traceback (most recent call last):
2014-09-02 11:17:41-0600 [Router 12199] File "/usr/local/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
2014-09-02 11:17:41-0600 [Router 12199] return self.currentContext().callWithContext(ctx, func, *args, **kw)
2014-09-02 11:17:41-0600 [Router 12199] File "/usr/local/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
2014-09-02 11:17:41-0600 [Router 12199] return func(*args,**kw)
2014-09-02 11:17:41-0600 [Router 12199] File "/usr/local/lib/python2.7/dist-packages/twisted/internet/process.py", line 216, in connectionLost
2014-09-02 11:17:41-0600 [Router 12199] self.proc.childConnectionLost(
self.name, reason)
2014-09-02 11:17:41-0600 [Router 12199] File "/usr/local/lib/python2.7/dist-packages/twisted/internet/_posixstdio.py", line 90, in childConnectionLost
2014-09-02 11:17:41-0600 [Router 12199] self.connectionLost(reason)
2014-09-02 11:17:41-0600 [Router 12199] --- <exception caught here> ---
2014-09-02 11:17:41-0600 [Router 12199] File "/usr/local/lib/python2.7/dist-packages/twisted/internet/_posixstdio.py", line 109, in connectionLost
2014-09-02 11:17:41-0600 [Router 12199] protocol.connectionLost(reason)
2014-09-02 11:17:41-0600 [Router 12199] File "/usr/local/lib/python2.7/dist-packages/crossbar/worker/process.py", line 146, in connectionLost
2014-09-02 11:17:41-0600 [Router 12199] sys.exit(1)
2014-09-02 11:17:41-0600 [Router 12199] exceptions.SystemExit: 1
2014-09-02 11:17:41-0600 [Router 12199] (TCP Port 8080 Closed)
2014-09-02 11:17:41-0600 [Router 12199] Main loop terminated.
2014-09-02 11:17:42-0600 [Controller 12190] Worker 12199: Process connection gone (Connection was closed cleanly.)
So my question is, what is the right way to shut down everything on the server side cleanly, in response to a specific rpc method? In certain use cases, I would like to like to ensure that the crossbar controller ends as well as the worker.