diff -r 31e63e25b4cc -r 64beb9e9c749 connectors/WAMP/__init__.py --- a/connectors/WAMP/__init__.py Mon Aug 21 20:17:19 2017 +0000 +++ b/connectors/WAMP/__init__.py Mon Aug 21 23:22:58 2017 +0300 @@ -22,8 +22,9 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -import sys, traceback, atexit -#from twisted.python import log +import sys +import traceback +import atexit from twisted.internet import reactor, threads from autobahn.twisted import wamp from autobahn.twisted.websocket import WampWebSocketClientFactory, connectWS @@ -36,6 +37,7 @@ _WampConnection = None _WampSessionEvent = Event() + class WampSession(wamp.ApplicationSession): def onJoin(self, details): global _WampSession, _WampSessionEvent @@ -49,10 +51,14 @@ _WampSession = None print 'WAMP session left' -PLCObjDefaults = { "StartPLC": False, - "GetTraceVariables" : ("Broken",None), - "GetPLCstatus" : ("Broken",None), - "RemoteExec" : (-1, "RemoteExec script failed!")} + +PLCObjDefaults = { + "StartPLC": False, + "GetTraceVariables": ("Broken", None), + "GetPLCstatus": ("Broken", None), + "RemoteExec": (-1, "RemoteExec script failed!") +} + def WAMP_connector_factory(uri, confnodesroot): """ @@ -61,37 +67,38 @@ """ servicetype, location = uri.split("://") urlpath, realm, ID = location.split('#') - urlprefix = {"WAMP":"ws", - "WAMPS":"wss"}[servicetype] + urlprefix = {"WAMP": "ws", + "WAMPS": "wss"}[servicetype] url = urlprefix+"://"+urlpath def RegisterWampClient(): - ## start logging to console + # start logging to console # log.startLogging(sys.stdout) # create a WAMP application session factory component_config = types.ComponentConfig( - realm = realm, - extra = {"ID":ID}) + realm=realm, + extra={"ID": ID}) session_factory = wamp.ApplicationSessionFactory( - config = component_config) + config=component_config) session_factory.session = WampSession # create a WAMP-over-WebSocket transport client factory transport_factory = WampWebSocketClientFactory( session_factory, - url = url, - serializers = [MsgPackSerializer()], - debug = False, - debug_wamp = False) + url=url, + serializers=[MsgPackSerializer()], + debug=False, + debug_wamp=False) # start the client from a Twisted endpoint conn = connectWS(transport_factory) - confnodesroot.logger.write(_("WAMP connecting to URL : %s\n")%url) + confnodesroot.logger.write(_("WAMP connecting to URL : %s\n") % url) return conn AddToDoBeforeQuit = confnodesroot.AppFrame.AddToDoBeforeQuit + def ThreadProc(): global _WampConnection _WampConnection = RegisterWampClient() @@ -99,22 +106,23 @@ reactor.run(installSignalHandlers=False) def WampSessionProcMapper(funcname): - wampfuncname = '.'.join((ID,funcname)) - def catcher_func(*args,**kwargs): + wampfuncname = '.'.join((ID, funcname)) + + def catcher_func(*args, **kwargs): global _WampSession - if _WampSession is not None : + if _WampSession is not None: try: return threads.blockingCallFromThread( reactor, _WampSession.call, wampfuncname, - *args,**kwargs) + *args, **kwargs) except TransportLost, e: confnodesroot.logger.write_error(_("Connection lost!\n")) confnodesroot._SetConnector(None) - except Exception,e: + except Exception, e: errmess = traceback.format_exc() confnodesroot.logger.write_error(errmess+"\n") print errmess - #confnodesroot._SetConnector(None) + # confnodesroot._SetConnector(None) return PLCObjDefaults.get(funcname) return catcher_func @@ -128,7 +136,7 @@ reactor, RegisterWampClient) if not _WampSessionEvent.wait(5): _WampConnection = stopConnecting() - raise Exception, _("WAMP connection timeout") + raise Exception(_("WAMP connection timeout")) def __del__(self): global _WampConnection @@ -144,13 +152,9 @@ return member # Try to get the proxy object - try : + try: return WampPLCObjectProxy() except Exception, msg: - confnodesroot.logger.write_error(_("WAMP connection to '%s' failed.\n")%location) + confnodesroot.logger.write_error(_("WAMP connection to '%s' failed.\n") % location) confnodesroot.logger.write_error(traceback.format_exc()) return None - - - -