1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
r"""wslink is a module that extends any
wslink related classes for the purposes of vtkWeb.
"""
from __future__ import absolute_import, division, print_function
# import inspect, types, string, random, logging, six, json, re, base64
import json, base64, time
from twisted.python import log
from twisted.internet import reactor
from autobahn.twisted.websocket import WebSocketServerProtocol
from wslink import websocket
from wslink import register as exportRpc
from vtk.web import protocols
from vtk.vtkWebCore import vtkWebApplication
# =============================================================================
application = None
# =============================================================================
#
# Base class for vtkWeb ServerProtocol
#
# =============================================================================
class ServerProtocol(websocket.ServerProtocol):
"""
Defines the core server protocol for vtkWeb. Adds support to
marshall/unmarshall RPC callbacks that involve ServerManager proxies as
arguments or return values.
Applications typically don't use this class directly, but instead
sub-class it and call self.registerVtkWebProtocol() with useful vtkWebProtocols.
"""
def __init__(self):
log.msg('Creating SP')
self.setSharedObject("app", self.initApplication())
websocket.ServerProtocol.__init__(self)
def initApplication(self):
"""
Let subclass optionally initialize a custom application in lieu
of the default vtkWebApplication.
"""
global application
if not application:
application = vtkWebApplication()
return application
def setApplication(self, application):
self.setSharedObject("app", application)
def getApplication(self):
return self.getSharedObject("app")
def registerVtkWebProtocol(self, protocol):
self.registerLinkProtocol(protocol)
def getVtkWebProtocols(self):
return self.getLinkProtocols()
|