connectors/WAMP/__init__.py
changeset 1740 b789b695b5c6
parent 1739 ec153828ded2
child 1744 69dfdb26f600
equal deleted inserted replaced
1739:ec153828ded2 1740:b789b695b5c6
    63     WAMP://127.0.0.1:12345/path#realm#ID
    63     WAMP://127.0.0.1:12345/path#realm#ID
    64     WAMPS://127.0.0.1:12345/path#realm#ID
    64     WAMPS://127.0.0.1:12345/path#realm#ID
    65     """
    65     """
    66     servicetype, location = uri.split("://")
    66     servicetype, location = uri.split("://")
    67     urlpath, realm, ID = location.split('#')
    67     urlpath, realm, ID = location.split('#')
    68     urlprefix = {"WAMP":"ws",
    68     urlprefix = {"WAMP":  "ws",
    69                  "WAMPS":"wss"}[servicetype]
    69                  "WAMPS": "wss"}[servicetype]
    70     url = urlprefix+"://"+urlpath
    70     url = urlprefix+"://"+urlpath
    71 
    71 
    72     def RegisterWampClient():
    72     def RegisterWampClient():
    73 
    73 
    74         ## start logging to console
    74         ## start logging to console
    75         # log.startLogging(sys.stdout)
    75         # log.startLogging(sys.stdout)
    76 
    76 
    77         # create a WAMP application session factory
    77         # create a WAMP application session factory
    78         component_config = types.ComponentConfig(
    78         component_config = types.ComponentConfig(
    79             realm = realm,
    79             realm = realm,
    80             extra = {"ID":ID})
    80             extra = {"ID": ID})
    81         session_factory = wamp.ApplicationSessionFactory(
    81         session_factory = wamp.ApplicationSessionFactory(
    82             config = component_config)
    82             config = component_config)
    83         session_factory.session = WampSession
    83         session_factory.session = WampSession
    84 
    84 
    85         # create a WAMP-over-WebSocket transport client factory
    85         # create a WAMP-over-WebSocket transport client factory
   101         _WampConnection = RegisterWampClient()
   101         _WampConnection = RegisterWampClient()
   102         AddToDoBeforeQuit(reactor.stop)
   102         AddToDoBeforeQuit(reactor.stop)
   103         reactor.run(installSignalHandlers=False)
   103         reactor.run(installSignalHandlers=False)
   104 
   104 
   105     def WampSessionProcMapper(funcname):
   105     def WampSessionProcMapper(funcname):
   106         wampfuncname = '.'.join((ID,funcname))
   106         wampfuncname = '.'.join((ID, funcname))
   107         def catcher_func(*args,**kwargs):
   107         def catcher_func(*args, **kwargs):
   108             global _WampSession
   108             global _WampSession
   109             if _WampSession is not None:
   109             if _WampSession is not None:
   110                 try:
   110                 try:
   111                     return threads.blockingCallFromThread(
   111                     return threads.blockingCallFromThread(
   112                         reactor, _WampSession.call, wampfuncname,
   112                         reactor, _WampSession.call, wampfuncname,
   113                         *args,**kwargs)
   113                         *args, **kwargs)
   114                 except TransportLost, e:
   114                 except TransportLost, e:
   115                     confnodesroot.logger.write_error(_("Connection lost!\n"))
   115                     confnodesroot.logger.write_error(_("Connection lost!\n"))
   116                     confnodesroot._SetConnector(None)
   116                     confnodesroot._SetConnector(None)
   117                 except Exception,e:
   117                 except Exception, e:
   118                     errmess = traceback.format_exc()
   118                     errmess = traceback.format_exc()
   119                     confnodesroot.logger.write_error(errmess+"\n")
   119                     confnodesroot.logger.write_error(errmess+"\n")
   120                     print errmess
   120                     print errmess
   121                     #confnodesroot._SetConnector(None)
   121                     #confnodesroot._SetConnector(None)
   122             return PLCObjDefaults.get(funcname)
   122             return PLCObjDefaults.get(funcname)